Apabila bekerja dengan JavaScript, ramai yang mendapati sintaks fungsi tanpa nama terkapsul menarik. Manakala sintaks (function(){})(); berfungsi dengan lancar, percubaan untuk menggunakan function(){}(); terbukti sia-sia. Untuk membongkar percanggahan ini, pemahaman yang lebih mendalam tentang sintaks JavaScript dan mekanisme pelaksanaan diperlukan.
Sintaks Fungsi dalam JavaScript
Dalam JavaScript, fungsi yang dinamakan mengikut sintaks:
function functionName() { /* function body */ }
Fungsi tanpa nama, sebaliknya, membenarkan seseorang mentakrifkan fungsi tanpa memberikan nama kepadanya. Ia boleh ditugaskan kepada pembolehubah:
var anonymousFunction = function() { /* function body */ };
Merangkum Fungsi Tanpa Nama
Pengenkapsulan fungsi tanpa nama melibatkan membungkusnya dalam kurungan dan melaksanakannya dengan segera:
(function() { /* function body */ })();
Teknik ini menawarkan modulariti dan membantu mengelakkan pembolehubah konflik.
Peranan Kurungan
Perbezaan utama antara kedua-dua sintaks yang dibentangkan terletak pada cara ia dihuraikan. Tanpa kurungan, function(){}(); ditafsirkan sebagai FunctionDeclaration, memerlukan nama.
Sebaliknya, membalut fungsi dalam kurungan menandakannya sebagai FunctionExpression, yang boleh wujud tanpa nama. Tanda kurung pada dasarnya bertindak sebagai Operator Pengelompokan yang menilai ungkapan yang disertakan dalam.
Pengisytiharan Fungsi lwn. Ungkapan Fungsi
Pengisytiharan Fungsi dan Ekspresi Fungsi mempunyai tatabahasa dan tingkah laku yang berbeza. FunctionDeclarations, seperti foo(), mesti mempunyai nama dan hanya boleh muncul dalam skop global atau dalam badan fungsi lain.
FunctionExpressions, seperti (function () {}), membenarkan penamaan pilihan dan boleh digunakan dalam sebarang konteks di mana ungkapan dijangka.
Kesimpulan
Manakala kedua-dua bentuk tanpa nama sintaks fungsi mencapai matlamat yang sama untuk merangkum blok kod, kehadiran atau ketiadaan kurungan menentukan tafsiran sebagai FunctionDeclaration atau FunctionExpression, masing-masing. Memahami konsep ini dan nuansa sintaksisnya memberi kuasa kepada pembangun untuk menulis kod JavaScript yang berkesan dan boleh diselenggara.
Atas ialah kandungan terperinci Mengapakah `(function(){})();` Berfungsi dalam JavaScript, Tetapi `function(){}();` Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!