Adakah Terdapat Perbezaan Fungsian Antara `})()` dan `}());` dalam JavaScript?

Patricia Arquette
Lepaskan: 2024-10-31 09:18:29
asal
260 orang telah melayarinya

Is There a Functional Difference Between `})()` and `}());` in 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);
Salin selepas log masuk
(function() {
    bar = 'bar';
    alert('foo');
}());

alert(bar);
Salin selepas log masuk

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;
Salin selepas log masuk
new ( function() {
    return { Class: function() { } }; 
}() ).Class;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!