IIFE da xavfsizlik uchun nuqta-vergul

Endi joyida chaqiraladigan funksiyamiz boshida ortiqcha belgi bilan emas, balki qavs ichiga olingan bo‘lsin, mana bunday:

javascript(function() {
  console.log(1); // 1 ni chiqaradi
})();

num o‘zgaruvchisi funksiyadan tashqarida aniqlansin:

javascriptlet num = 1; // nuqta-vergul qo‘yilgan

(function() {
  console.log(num); // 1 ni chiqaradi
})();

Endi faraz qilaylik, nuqta-vergul qo‘yishni unutdik:

javascriptlet 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:

javascriptlet 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:

javascript;(function() {
  console.log(1); // 1 ni chiqaradi
})();
Задание 1

Kodni ishlamasdan, konsolga nima chiqishini aniqlang:

javascriptlet str = 'str';

(function() {
  console.log(1);
})();
Задание 2

Kodni ishlamasdan, konsolga nima chiqishini aniqlang:

javascriptlet str = 'str'

(function() {
  console.log(1);
})();