← エラー辞典に戻る

JavaScript

🚨 ReferenceError: Cannot access before initialization

let/constの宣言前にアクセスしている

😰 こんな症状

変数を使おうとすると「Cannot access before initialization」と表示される。変数の宣言順序で起きるよ。

🔍 原因

let/constで宣言した変数を、宣言より前の行で使おうとしているよ。これはTDZ(Temporal Dead Zone)と呼ばれる仕組みで、let/constは宣言行に到達するまでアクセスできないんだ。varと違いlet/constは巻き上げ(ホイスティング)されても初期化されないよ。

❌ エラーが起きるコード

console.log(x);
let x = 5;
// TDZ エラー

✅ 直し方

1. 変数の宣言(let/const)を、使用する行より前に書く。 2. 関数内で使う変数は関数の先頭で宣言する習慣をつける。 3. varは巻き上げされるがundefinedになるだけでエラーにならない(ただしvarは使わない方がよい)。

✅ 修正後のコード

let x = 5;
console.log(x);
// 宣言後に使う

この解決法は役立ちましたか?

🔗 関連するエラー

🔗 別カテゴリの関連エラー

📖 この問題を学べるレッスン

JavaScriptコースで基礎から学ぶ →

📝 関連ブログ記事

📖 関連する用語

🚀 JavaScriptコースで基礎を学ぼう!

エラーの原因を根本から理解するには、基礎を体系的に学ぶのが近道です。完全無料・登録不要。

JavaScriptコースを始める →

❓ 関連するQ&A