Rumah > Artikel > hujung hadapan web > Adakah Terdapat Perbezaan Fungsian Antara `})()` dan `}());` dalam JavaScript?
Sintaks Invokasi Fungsi dalam JavaScript: Meneroka Nuansa
Dalam JavaScript, sintaks untuk memanggil fungsi boleh berbeza-beza, yang membawa kepada soalan tentang fungsinya kesetaraan. Pertimbangkan dua blok kod berikut:
(function() { bar = 'bar'; alert('foo'); })(); alert(bar);
(function() { bar = 'bar'; alert('foo'); }()); alert(bar);
Kedua-dua blok kod berjaya memberi amaran kepada "foo" dan kemudian "bar". Satu-satunya perbezaan yang ketara nampaknya ialah penggunaan })() dan }()); di penghujungnya. Jadi, adakah terdapat sebarang perbezaan fungsi antara kedua-dua pendekatan ini?
Kefungsian Sama
Dalam senario khusus ini, tiada perbezaan fungsi wujud antara kedua-dua sintaks. Kedua-dua borang melaksanakan kod dalam fungsi tanpa nama, memberikan nilai 'bar' kepada bar pembolehubah dan memaparkan mesej amaran seperti yang dimaksudkan. Oleh itu, ia adalah setara dari segi fungsi.
Apabila Timbul Perbezaan
Walau bagaimanapun, terdapat situasi di mana kedua-dua sintaks menghasilkan hasil yang berbeza. Pertimbangkan pengubahsuaian berikut:
new (function() { this.prop = 4; })().prop;
new ( function() { return { Class: function() { } }; }() ).Class;
Dalam blok kod pertama, baharu digunakan untuk mencipta tika baharu kelas dan sifat prop tika itu diakses. Ini mengembalikan nilai 4.
Sebaliknya, blok kod kedua memanggil baharu pada sifat Kelas objek yang dikembalikan oleh fungsi. Oleh kerana kurungan yang mengelilingi panggilan fungsi berada dalam kurungan luar, ia tidak mencetuskan yang baharu tetapi sebaliknya melaksanakan fungsi tersebut secara normal. Oleh itu, sifat Kelas dijadikan instantiated.
Kesimpulan
Dalam kebanyakan kes, })() dan }()); boleh ditukar ganti untuk menggunakan fungsi tanpa sebarang implikasi fungsi. Walau bagaimanapun, jika baharu digunakan sebelum kurungan atau operasi dilakukan selepas kurungan, sintaks mungkin menjejaskan tingkah laku kod. Adalah penting untuk mengetahui nuansa ini untuk menulis kod JavaScript yang berfungsi seperti yang dimaksudkan.
Atas ialah kandungan terperinci Adakah Terdapat Perbezaan Fungsian Antara `})()` dan `}());` dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!