Взгляните на приведенный ниже код:Это ошибка в редакторе разработчиков firefox?
var c = 50;
{
console.log(y);
let y = 50;
}
Этот код, как ожидается, бросить ReferenceError и это делает. Но в консоли сообщение, прикрепленное с исключением, просто взорвало мой разум. Он говорит:
ReferenceError: can't access lexical declaration 'c' before initialization
В коде c
это первая переменная объявлена. Сообщение об ошибке указывает, что что-то не так с объявлением c
. Очевидно, что переменная y
внутри блока вызывает исключение. Мы не можем использовать переменные, объявленные с использованием let
перед его объявлением. Когда я объявляю еще одну переменную в первой строке, скажем test
, сообщение об ошибке меняется:
ReferenceError: can't access lexical declaration 'test' before initialization
я упускаю что-то или я прав насчет ошибки? У меня есть последняя версия Firefox Developer Edition (версия 49.0a2).
Еще одна вещь, заслуживающая внимания, состоит в том, что блок является просто закрывающим блоком, а не телом функции.
@Kaiido Итак, это ошибка? Потому что у Chrome есть ожидаемое сообщение об ошибке для этого случая. –
Если вы считаете, что это ошибка, чем сделать отчет об ошибке, и они скажут yay или nay. – epascarello
@Bergi Сообщение об ошибке смущает меня, потому что я думал, что что-то не так с переменной «y». Но вместо этого он говорит, что что-то не так с переменной, которая находится в первой строке в моем примере. –