Проверяет понимание всплытия переменных var и поведения в строгом режиме внутри IIFE.
В JavaScript переменные, объявленные через var, всплывают в начало своей функциональной области видимости. Это означает, что при обращении к переменной до её объявления вы получите undefined, а не ошибку. Это происходит потому, что объявление переменной обрабатывается на этапе компиляции, а присваивание значения остаётся на месте.
Рассмотрим пример с IIFE:
(function() {
console.log(x); // undefined
var x = 10;
})();Здесь x всплывает в начало функции, поэтому console.log выводит undefined, а не вызывает ошибку.
Строгий режим ('use strict') не изменяет поведение всплытия для var. Он лишь запрещает некоторые небезопасные конструкции, такие как присваивание необъявленным переменным. Поэтому в строгом режиме результат будет тем же — undefined.
Однако если использовать let или const, то до инициализации будет выброшена ошибка ReferenceError, так как они находятся в временной мёртвой зоне (temporal dead zone).
(function() {
'use strict';
console.log(y); // ReferenceError: Cannot access 'y' before initialization
let y = 10;
})();Понимание всплытия var важно для избежания неожиданных результатов в коде. В современной разработке рекомендуется использовать let и const, чтобы избежать подобных проблем и сделать код более предсказуемым.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию