メッセージ
ReferenceError: can't access lexical declaration `X' before initialization (Firefox) ReferenceError: 'x' is not defined (Chrome)
エラータイプ
何がうまくいかなかったのか?
初期化前に語彙変数にアクセスしました。これはブロックステートメント内で、定義される前にlet か const 宣言にアクセスすると発生します。
例
不正な場合
この場合、変数 "foo" はブロックステートメント内で let を使用して再宣言されています。
function test() {
let foo = 33;
if (true) {
let foo = (foo + 55);
// ReferenceError: can't access lexical
// declaration `foo' before initialization
}
}
test();
有効な場合
"foo" を if ステートメント内に変更するには、再宣言の原因となる let を取り除きます。
function test(){
let foo = 33;
if (true) {
foo = (foo + 55);
}
}
test();