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)

エラータイプ

ReferenceError

何がうまくいかなかったのか?

初期化前に語彙変数にアクセスしました。これはブロックステートメント内で、定義される前にletconst 宣言にアクセスすると発生します。

不正な場合

この場合、変数 "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();

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,