Вопрос проверяет понимание различий между функциональной (var) и блочной (let/const) областями видимости в JavaScript, что важно для написания предсказуемого кода.
Функциональная область видимости означает, что переменная, объявленная с помощью var, доступна в пределах всей функции, в которой она объявлена, независимо от вложенных блоков. Блочная область видимости (let и const) ограничивает видимость переменной только тем блоком кода (фигурными скобками), где она объявлена.
function example() {
if (true) {
var a = 1; // функциональная область
let b = 2; // блочная область
}
console.log(a); // 1 — доступно
console.log(b); // ReferenceError: b is not defined
}Переменная a видна за пределами блока if, потому что var привязана к функции. b же существует только внутри блока.
Переменные var всплывают в начало функции и инициализируются значением undefined. Поэтому их можно использовать до объявления (но значение будет undefined). let и const тоже всплывают, но не инициализируются — они находятся во временной мёртвой зоне (Temporal Dead Zone) до момента объявления. Попытка обратиться к ним до строки объявления вызывает ReferenceError.
console.log(x); // undefined (var)
var x = 5;
console.log(y); // ReferenceError
let y = 10;В современном JavaScript рекомендуется использовать let и const для всех переменных, чтобы избежать случайных утечек и ошибок, связанных с функциональной областью видимости. const применяется для значений, которые не должны переназначаться, let — для изменяемых переменных. var может встречаться в старом коде, но в новых проектах его лучше избегать.
Вывод: Понимание разницы между функциональной и блочной областью видимости помогает писать более надёжный и предсказуемый код, особенно при работе с циклами, условиями и замыканиями.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию