JavaScript
🚨 TypeError: undefined is not an object (evaluating 'obj.name')
存在しないオブジェクトのプロパティにアクセスしている
😰 こんな症状
undefinedな変数にドット記法でアクセスしてエラーになる。オブジェクトの初期化忘れで起きやすいよ。
🔍 原因
変数がundefinedのままプロパティにアクセスしているよ。オブジェクトの初期化忘れ、関数の戻り値がundefined(returnを書き忘れ)、非同期処理の結果がまだ届いていない、などが原因だよ。undefinedのプロパティにアクセスするとTypeErrorになるよ。
❌ エラーが起きるコード
let arr;
arr.push(1);
// undefined に push ✅ 直し方
1. アクセス前にオブジェクトが存在するか確認する(if (obj) obj.name)。 2. オプショナルチェーン(?.)を使う:obj?.name。 3. 変数の初期化を確認する(let arr; → let arr = [];)。 4. 関数にreturn文があるか確認する。
✅ 修正後のコード
let arr = [];
arr.push(1); この解決法は役立ちましたか?
🔗 関連するエラー
- Uncaught ReferenceError: xxx is not defined — 変数・関数名のタイポ
- TypeError: xxx is not a function — 関数でないものを呼び出している
- TypeError: Cannot read properties of undefined (reading 'length') — undefinedに対して.lengthを呼んでいる
- Uncaught TypeError: Cannot read properties of null — getElementById の id が存在しない
- 404 Not Found(スクリプトが読み込まれない) — script の src パスが間違っている
🔗 別カテゴリの関連エラー
📖 この問題を学べるレッスン
📝 関連ブログ記事
- プログラミングのエラーメッセージの読み方 — エラーの読み方を基礎から解説
- JavaScriptとは?初心者向けにわかりやすく解説 — 変数・関数・イベントの基本
- JavaScriptでボタンクリックを動かす方法 — ボタンクリック時の動作を解説