Sobes.tech
Middle+

Има код с самостоятелно извикваща се функция (IIFE) с използване на var. Какво ще се изведе в конзолата при извикване на typeof a и typeof b извън функцията? Как ще се промени поведението в строг режим?

sobes.tech AI

Отговор от AI

Ако вътре в IIFE са обявени променливи с var, например:

(function() {
  var a = 10;
  b = 20; // без var
})();

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

Променливата a, обявена с var вътре във функцията, е локална и недостъпна отвън, затова typeof a ще върне "undefined".

Променливата b, обявена без var, let или const, в нестрог режим, води до създаване на глобална променлива. Затова typeof b ще върне "number".

В строг режим ('use strict';) опитът да се присвои стойност на необявена променлива (b = 20;) ще предизвика грешка ReferenceError, и глобалната променлива няма да бъде създадена. Така, извън функцията, и двете променливи няма да са достъпни, и typeof a и typeof b ще върнат "undefined" (или ще бъде хвърлена грешка по-рано).