Выбор ответа Middle Области видимости и замыкания обновлено
Повторное объявление let
Вопрос
Что произойдёт при запуске этого файла?
console.log('старт');
let total = 1;
let total = 2;
console.log(total);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ничего не выведет: SyntaxError при разборе, до выполнения. Повторное объявление let в той же области это ранняя ошибка (early error).
Варианты ответа
- Выведет
старт, затем2: второе объявление победит - Выведет
старт, затем упадёт с SyntaxError на второй строкеlet - Ничего не выведет: SyntaxError при разборе, до выполненияправильный ответ
- Выведет
старт, затем1: второе объявление проигнорируется
Разбор
Повторное объявление let в той же области это ранняя ошибка (early error). Она обнаруживается при разборе скрипта, до выполнения первой строки, поэтому даже старт не выведется. С var повторное объявление разрешено, и тогда вывелось бы старт и 2. Варианты с выводом старт предполагают, что ошибка случится во время выполнения, но синтаксические ошибки так не работают.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.