IIFE da xavfsizlik uchun nuqta-vergul
Endi joyida chaqiraladigan funksiyamiz boshida ortiqcha belgi bilan emas, balki qavs ichiga olingan bo‘lsin, mana bunday:
(function() {
console.log(1); // 1 ni chiqaradi
})();
num o‘zgaruvchisi funksiyadan tashqarida
aniqlansin:
let num = 1; // nuqta-vergul qo‘yilgan
(function() {
console.log(num); // 1 ni chiqaradi
})();
Endi faraz qilaylik, nuqta-vergul qo‘yishni unutdik:
let num = 1
(function() {
console.log(num); //!! xatolik beradi
})();
Ma'lum bo‘ladiki, bunday kod xatolik beradi, chunki JavaScript bizning funksiyamizni birinchi qator buyrug‘ining davomi sifatida qabul qiladi.
Bunday muammolarning oldini olish uchun, funksiyani joyida chaqirishdan oldin har doim nuqta-vergul qo‘yish kerak, mana bunday:
let num = 1
;(function() {
console.log(num); // 1 ni chiqaradi
})();
Muammo biroz sun'iy ko‘rinadi. Aslida, bu shunday emas. Vaziyat shunday bo‘lishi mumkinki, sahifangizda alohida fayllardan bir nechta skript ulanadi. Bu holda bir faylning oxirida nuqta-vergul qo‘yilmagan bo‘lishi mumkin va bu avtomatik ravishda muammoga olib keladi, agar ikkinchi fayl funksiyani joyida chaqirish bilan boshlansa.
Shuning uchun, funksiyani joyida chaqirishdan oldin har doim, har doim nuqta-vergul qo‘ying, hatto hozirda muammo bo‘lmasligiga ishonchingiz komil bo‘lsa ham. Ular keyin paydo bo‘lishi mumkin.
Yuqorida aytilganlarni qo‘llaymiz va funksiyani joyida chaqiramiz, boshida nuqta-vergul qo‘ygan holda:
;(function() {
console.log(1); // 1 ni chiqaradi
})();
Kodni ishlamasdan, konsolga nima chiqishini aniqlang:
let str = 'str';
(function() {
console.log(1);
})();
Kodni ishlamasdan, konsolga nima chiqishini aniqlang:
let str = 'str'
(function() {
console.log(1);
})();