Rumah >hujung hadapan web >tutorial js >Apakah yang dilakukan oleh Tanda Seru dalam Ungkapan Fungsi JavaScript?
Tanda Seru Enigmatik dalam Ungkapan Fungsi JavaScript
Dalam bidang kod JavaScript, anda mungkin telah menemui pemandangan yang ingin tahu: tanda seru sebelum pengisytiharan fungsi. Ini seolah-olah不起眼的符号 mempunyai kepentingan yang mendalam yang mengubah sifat fungsi itu.
Tanda seru, !, mengubah pengisytiharan fungsi menjadi ungkapan fungsi. Ini bermakna fungsi itu kini dianggap sebagai nilai yang boleh diberikan kepada pembolehubah, diluluskan sebagai hujah atau malah dikembalikan daripada fungsi lain.
Untuk memahami implikasi, pertimbangkan kod berikut:
function foo() {}
Ini ialah pengisytiharan fungsi standard, yang hanya mentakrifkan fungsi tetapi tidak memanggilnya. Untuk benar-benar melaksanakan fungsi, anda akan memanggilnya seperti ini:
foo()
Sekarang, mari perkenalkan tanda seru:
!function foo() {}();
Tambahan yang kelihatan tidak berbahaya ini mengubah permainan bola. Tanda seru menukarkan pengisytiharan fungsi menjadi ungkapan, yang kini boleh digunakan serta-merta dengan menambahkan kurungan. Keutamaan kurungan adalah lebih tinggi daripada tanda seru, jadi kod tersebut dilaksanakan sebagai:
(function foo() {})()
Ini pada asasnya menyelesaikan tugas yang sama seperti seruan eksplisit dalam contoh sebelumnya. Walau bagaimanapun, ia menawarkan kelebihan halus: ia menjimatkan bait setiap ungkapan fungsi.
Selain itu, tanda seru juga berfungsi untuk tujuan lain. Ia memaksa ungkapan untuk mengembalikan nilai boolean berdasarkan nilai pulangan fungsi. Walau bagaimanapun, dalam kes ungkapan fungsi yang digunakan serta-merta (IIFE), nilai pulangan biasanya tidak ditentukan, menjadikan hasil ungkapan benar. Nilai boolean ini biasanya tidak digunakan, tetapi ia tetap merupakan kesan sampingan yang ingin tahu daripada kehadiran tanda seru.
Atas ialah kandungan terperinci Apakah yang dilakukan oleh Tanda Seru dalam Ungkapan Fungsi JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!