Sobes.tech
Middle+

Ką konsolėje parodytų, kai išorėje iškviečiame typeof a ir typeof b iš IIFE funkcijos, naudojant var? Kaip pasikeis elgsena griežtame režime?

sobes.tech AI

Atsakymas iš AI

Jei viduje IIFE yra deklaruojamos kintamosios naudojant var, pavyzdžiui:

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

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

Kintamoji a, deklaruota naudojant var funkcijos viduje, yra lokali ir išorėje prieinama nėra, todėl typeof a grąžins "undefined".

Kintamoji b, deklaruota be var, let ar const, nestrikto režimo metu sukuria globalią kintamąjį. Todėl typeof b grąžins "number".

Griežto režimo ('use strict';) metu, bandymas priskirti reikšmę ne deklaruotam kintamajam (b = 20;) sukels ReferenceError, ir globalus kintamasis nebus sukurtas. Taigi, už funkcijos ribų abi kintamosios nėra pasiekiamos, ir typeof a bei typeof b grąžins "undefined" (arba bus išmestas klaidos praeityje).