Выбор ответа Middle Области видимости и замыкания обновлено

Повторное объявление let

Вопрос

Что произойдёт при запуске этого файла?

console.log('старт');
let total = 1;
let total = 2;
console.log(total);

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Ничего не выведет: SyntaxError при разборе, до выполнения. Повторное объявление let в той же области это ранняя ошибка (early error).

Варианты ответа

  1. Выведет старт, затем 2: второе объявление победит
  2. Выведет старт, затем упадёт с SyntaxError на второй строке let
  3. Ничего не выведет: SyntaxError при разборе, до выполненияправильный ответ
  4. Выведет старт, затем 1: второе объявление проигнорируется

Разбор

Повторное объявление let в той же области это ранняя ошибка (early error). Она обнаруживается при разборе скрипта, до выполнения первой строки, поэтому даже старт не выведется. С var повторное объявление разрешено, и тогда вывелось бы старт и 2. Варианты с выводом старт предполагают, что ошибка случится во время выполнения, но синтаксические ошибки так не работают.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.