Это ошибка в редакторе разработчиков firefox?
Взгляните на приведенный ниже код:
var c = 50;
{
console.log(y);
let y = 50;
}
Этот код должен вызывать ReferenceError, и он делает это. Но в консоли сообщение, прикрепленное с исключением, просто взорвало мой разум. В нем говорится:
ReferenceError: не удается получить доступ к лексическому объявлению 'c' перед инициализацией
В коде c
объявлена первая переменная. Сообщение об ошибке указывает, что что-то не так с объявлением c
. Это явно переменная y
внутри блока, вызывающая исключение. Мы не можем использовать переменные, объявленные с помощью let
до его объявления. Когда я объявляю другую переменную в первой строке, скажем test
, сообщение об ошибке изменяется на:
ReferenceError: не удается получить доступ к лексическому объявлению 'test' перед инициализацией
Я что-то упустил или я прав об ошибке? У меня есть последняя версия Firefox Developer Edition (версия 49.0a2).
Еще одна вещь, заслуживающая внимания, состоит в том, что блок является просто закрывающим блоком, а не телом функции.
Ответы
Ответ 1
Этот пост сделан в соответствии с этим мета-сообщением вместо того, чтобы закрываться (см. this).
Как @Martin Smith и @Sam Onela сказал (1, 2), эта проблема была решена в версии 53/54. Соответствующий отчет bugzilla, сделанный Devashish (оригинальный плакат).