Sobes.tech
Middle+

IIFE bilan var ishlatilgan holda a va b ning typeof chaqirilganda konsolda nima chiqadi? Qattiq rejimda qanday o'zgaradi?

sobes.tech AI

AIdan javob

Agar IIFE ichida var yordamida o'zgaruvchilar e'lon qilingan bo'lsa, masalan:

(function() {
  var a = 10;
  b = 20; // varsiz
})();

console.log(typeof a); // "undefined"
console.log(typeof b); // "number"

var bilan e'lon qilingan a o'zgaruvchisi funksiya ichida mahalliy bo'lib, tashqaridan kirish mumkin emas, shuning uchun typeof a "undefined" qaytaradi.

var, let yoki constsiz e'lon qilingan b o'zgaruvchisi, no-strict rejimda, global o'zgaruvchi yaratadi. Shuning uchun, typeof b "number" qaytaradi.

Strict rejimda ('use strict';), e'lon qilinmagan o'zgaruvchiga qiymat berishga urinish (b = 20;) ReferenceError xatosini keltirib chiqaradi va global o'zgaruvchi yaratilmaydi. Shu tarzda, funksiyadan tashqarida ikkala o'zgaruvchi ham kirish mumkin bo'lmaydi, va typeof a va typeof b "undefined" qaytaradi (yoki bu xato oldindan chiqariladi).