← エラー辞典に戻る

JavaScript

TypeError: undefined is not an object (evaluating 'obj.name')

存在しないオブジェクトのプロパティにアクセスしている

こんな症状

undefinedな変数にドット記法でアクセスしてエラーになる。オブジェクトの初期化忘れで起きやすいよ。

まず試す

アクセス前に変数を初期化する(let arr = [])か、オプショナルチェーン obj?.name を使う。

js
// ❌ undefined に push
let arr;
arr.push(1);

// ✅ 初期化してから使う
let arr2 = [];
arr2.push(1);

これで直らなければ、下の「自分のケース」を確認。

🔍 自分のケースはどれ?

  • オブジェクト/配列の初期化を忘れた
    → let arr = []; let obj = {}; のように初期化する。
  • 関数の戻り値が undefined
    → return を書き忘れていないか確認する。
  • 非同期の結果が届く前にアクセス
    → await やコールバックの中でアクセスする。obj?.name でガードも有効。

なぜ起きる?

変数がundefinedのままプロパティにアクセスしているよ。オブジェクトの初期化忘れ、関数の戻り値がundefined(returnを書き忘れ)、非同期処理の結果がまだ届いていない、などが原因だよ。undefinedのプロパティにアクセスするとTypeErrorになるよ。

✕ エラーが起きるコード
let arr;
arr.push(1);
// undefined に push
✓ 直したコード
let arr = [];
arr.push(1);

✅ 直ったか確認

プロパティアクセスが TypeError なく動けばOK。

🆘 まだ直らないときは

どの変数が undefined かは、エラー行のドットの手前を console.log すると分かる。

Q&Aで質問する →

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

🔗 関連するエラー

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

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

JavaScriptコース(基礎から)で根本から理解する →

✏️ 手を動かして練習

このテーマの図解ドリルで実際に書いて確認する →

📝 関連ブログ記事

📖 関連する用語

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

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

JavaScriptコースを始める →

❓ 関連するQ&A