Я попытался выполнить следующий код в Firefox V30.0 блокнота:ReferenceError не кидает при обращении к 'давайте переменную до объявления
function do_something() {
console.log(foo); // ReferenceError
let foo = 2;
}
do_something();
Ожидаемое поведение является то, что моя программа должна бросить ссылки Ошибка, потому что Я обращаюсь к переменной let
перед ее объявлением. Но, я не получаю ожидаемое поведение, программа получила казнены и результат, как показано ниже
undefined
Можете ли вы объяснить мне, почему он ведет себя так?
Насколько я знаю, 'let' объявленные переменные все еще подняты, то же самое, что и' var', вплоть до вершины их блока, а не функции. –
@JamesThorpe - декларации поднимаются, но из-за временной мертвой зоны любая попытка ссылаться на них перед их инициализацией должна бросать. –
вы можете запустить код в «строгом режиме» и посмотреть, что-то изменится, на мой взгляд, ожидаемый результат - это выбросить ... переменное значение должно произойти, только если вы используете ключевое слово var ... – Hitmands