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" (или ще бъде хвърлена грешка по-рано).