JavaScript
Uncaught ReferenceError: xxx is not defined
変数・関数名のタイポ
こんな症状
コンソールに ReferenceError: xxx is not defined と表示される。変数名や関数名を間違えたときに起きやすいよ。
まず試す
エラーの名前が let/const/function で宣言されているか、スペル・大文字小文字が一致しているか確認する。
js
// ❌ 宣言されていない
console.log(myVar);
// ✅ 宣言してから使う
const myVar = "hello";
console.log(myVar);これで直らなければ、下の「自分のケース」を確認。
🔍 自分のケースはどれ?
- ✓変数名のタイポ・大文字小文字違い
→ 宣言した名前と完全一致させる(myVar と myvar は別物)。 - ✓宣言より前で使っている
→ 宣言を使用位置より前に置く。 - ✓別ファイル/スコープの変数
→ import しているか、同じスコープにあるか確認する。
なぜ起きる?
JavaScriptエンジンが指定された名前の変数や関数をスコープ内で見つけられないよ。変数名のタイポ(スペルミス)、大文字小文字の間違い、宣言する前に使おうとしている、別のスコープで宣言した変数にアクセスしようとしている、のいずれかが原因だよ。
✕ エラーが起きるコード
console.log(myVar);
// myVar が宣言されていない✓ 直したコード
const myVar = "hello";
console.log(myVar);✅ 直ったか確認
保存して再読み込み。ReferenceError が消え、変数の値が使えればOK。
この解決法は役立ちましたか?
🔗 関連するエラー
- TypeError: xxx is not a function — 関数でないものを呼び出している
- TypeError: undefined is not an object (evaluating 'obj.name') — 存在しないオブジェクトのプロパティにアクセスしている
- Uncaught TypeError: x.forEach is not a function — forEachできない値に対してforEachしている
- Uncaught ReferenceError: Cannot access 'x' before initialization — let/constの宣言前にアクセスしている
- Invalid left-hand side in assignment — 代入できないものに代入しようとしている
🔗 別カテゴリの関連エラー
📖 この問題を学べるレッスン
✏️ 手を動かして練習
📝 関連ブログ記事
- プログラミングのエラーメッセージの読み方 — エラーの読み方を基礎から解説
- JavaScriptとは?初心者向けにわかりやすく解説 — 変数・関数・イベントの基本
- JavaScriptでボタンクリックを動かす方法 — ボタンクリック時の動作を解説