ReferenceError: can't access lexical declaration 'X' before initialization
Сообщение
ReferenceError: can't access lexical declaration `X' before initialization (Firefox) ReferenceError: 'x' is not defined (Chrome)
Тип ошибки
Что случилось?
Примеры
Неправильно
Здесь переменная "foo" заново объявляется внутри блока с помощью ключевого слова let
.
js
function test() {
let foo = 33;
if (true) {
let foo = foo + 55;
// ReferenceError: can't access lexical
// declaration `foo' before initialization
}
}
test();
Правильно
Чтобы изменить "foo" в теле выражения if, надо убрать ключевое слово let
и таким образом избавиться от повторного объявления.
js
function test() {
let foo = 33;
if (true) {
foo = foo + 55;
}
}
test();