Sobes.tech
Назад к вопросам
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" (или ошибка будет выброшена до этого).