Rumah >hujung hadapan web >tutorial js >Mengapa Mendapat Fungsi JavaScript Tanpa Nama Sejurus Selepas Definisi?
Mengapa Menggunakan Fungsi Tanpa Nama pada Baris Yang Sama?
Apabila bekerja dengan penutupan, adalah perkara biasa untuk menggunakan fungsi tanpa nama pada baris yang sama. ditakrifkan. Walaupun ini kelihatan sewenang-wenangnya, ia adalah penting untuk pelaksanaan yang betul kerana cara JavaScript mengendalikan pengisytiharan fungsi.
Definisi Fungsi dalam JavaScript
JavaScript membenarkan tiga kaedah untuk mentakrifkan fungsi:
Perbezaan utama antara pengisytiharan dan ungkapan ialah bahawa pengisytiharan memerlukan pengecam (nama) manakala ungkapan boleh tanpa nama.
Fungsi Tanpa Nama dan Pemisah Baris
Fungsi tanpa nama berkelakuan berbeza daripada fungsi yang dinamakan. Apabila menulis ungkapan fungsi tanpa nama, anda boleh menyediakan pengecam dalam kurungan secara pilihan, tetapi ia tidak perlu.
Jika anda memutuskan baris selepas mentakrifkan fungsi tanpa nama, JavaScript mentafsirkannya sebagai pengisytiharan fungsi. Walau bagaimanapun, oleh kerana tiada pengecam diberikan, pengisytiharan menjadi sintaks tidak sah.
Contoh:
Kod ini mencipta ungkapan fungsi tanpa nama dan memanggilnya pada baris yang sama:
(function(msg) { alert(msg); })('Hello');
Tidak sah Contoh:
Jika anda memutuskan garisan dan meninggalkan kurungan, ia akan menjadi pengisytiharan fungsi yang tidak betul:
function(msg) { alert(msg); } ('Hello'); // Syntax error: Invalid function syntax without an identifier
Untuk menjadikannya berfungsi, anda perlu menambah kurungan untuk menggunakan fungsi tanpa nama ungkapan:
function(msg) { alert(msg); }('Hello');
Kesimpulan
Menyebut fungsi tanpa nama pada baris yang sama memastikan ia dilaksanakan dengan betul sebagai ungkapan fungsi, mengelakkannya daripada disalahtafsirkan sebagai pengisytiharan fungsi dengan pengecam yang tiada.
Atas ialah kandungan terperinci Mengapa Mendapat Fungsi JavaScript Tanpa Nama Sejurus Selepas Definisi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!