14

Взгляните на приведенный ниже код:Это ошибка в редакторе разработчиков 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).

Еще одна вещь, заслуживающая внимания, состоит в том, что блок является просто закрывающим блоком, а не телом функции.

+0

@Kaiido Итак, это ошибка? Потому что у Chrome есть ожидаемое сообщение об ошибке для этого случая. –

+4

Если вы считаете, что это ошибка, чем сделать отчет об ошибке, и они скажут yay или nay. – epascarello

+0

@Bergi Сообщение об ошибке смущает меня, потому что я думал, что что-то не так с переменной «y». Но вместо этого он говорит, что что-то не так с переменной, которая находится в первой строке в моем примере. –

ответ