Titik Koma untuk Keselamatan dalam IIFE
Sekarang, mari kita anggap fungsi yang dipanggil di tempat (IIFE) bukan dimulai dengan tanda tambah, tetapi dibungkus dengan tanda kurung, seperti ini:
(function() {
console.log(1); // akan memaparkan 1
})();
Mari kita anggap pembolehubah num ditetapkan di luar
fungsi:
let num = 1; // titik koma diletakkan
(function() {
console.log(num); // akan memaparkan 1
})();
Sekarang, mari kita anggap kita terlupa meletakkan titik koma:
let num = 1
(function() {
console.log(num); //!! akan memberikan ralat
})();
Ini menyebabkan kod tersebut akan memberikan ralat, kerana JavaScript menganggap fungsi kita sebagai kesinambungan perintah baris pertama.
Untuk mengelakkan masalah sedemikian, sebelum memanggil fungsi di tempat, sentiasa perlu meletakkan titik koma, seperti ini:
let num = 1
;(function() {
console.log(num); // akan memaparkan 1
})();
Nampaknya masalah ini agak direka-reka. Sebenarnya, tidak. Mungkin terdapat situasi di mana beberapa skrip disambungkan pada halaman anda daripada fail berasingan. Dalam kes ini, di akhir satu fail, titik koma mungkin tertinggal dan ini secara automatiknya akan menyebabkan masalah jika fail kedua bermula dengan panggilan fungsi di tempat.
Oleh itu, sentiasa-sentiasa letakkan titik koma sebelum memanggil fungsi di tempat, walaupun pada masa ini anda yakin bahawa tiada masalah akan timbul. Masalah boleh timbul kemudian.
Mari kita gunakan apa yang dinyatakan di atas dan panggil fungsi di tempat, dengan meletakkan titik koma di permulaan:
;(function() {
console.log(1); // akan memaparkan 1
})();
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
let str = 'str';
(function() {
console.log(1);
})();
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
let str = 'str'
(function() {
console.log(1);
})();