Назад к вопросам
Middle+
2
Есть код с самовызывающейся функцией (IIFE) с использованием var. Что будет выведено в консоли при вызове typeof a и typeof b снаружи функции? Как поведение изменится в строгом режиме?
Компании, где спрашивали
Ifellow
Ответ от нейросети
sobes.tech 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" (или ошибка будет выброшена до этого).