TypeError・ReferenceError・SyntaxError の違い

入門 | 8分 で読める | 2026.07.10

公式ドキュメント

まず結論

JavaScriptのエラー名は、どの種類の問題が起きたかを教えてくれます。

よく見るのは次の3つです。

エラーざっくりした意味
TypeError値の種類や中身が想定と違う
ReferenceError変数や関数が見つからない
SyntaxError文法として壊れている

エラー名だけで直せるわけではありませんが、最初の切り分けに役立ちます。

TypeError

TypeErrorは、値の型や中身が想定と違う時に出ます。

例:

const button = document.querySelector("#save");
button.addEventListener("click", () => {});

#save がHTMLに存在しない場合、buttonnull です。nulladdEventListener はないため、エラーになります。

TypeError: Cannot read properties of null

確認すること:

  • 変数の中身がnullではないか
  • 配列だと思った値が配列か
  • オブジェクトのプロパティが存在するか
  • APIレスポンスの形が想定通りか

ReferenceError

ReferenceErrorは、参照しようとした名前が存在しない時に出ます。

console.log(userName);

userName が定義されていないと、次のようになります。

ReferenceError: userName is not defined

よくある原因:

  • 変数名の打ち間違い
  • import忘れ
  • スコープの外で使っている
  • scriptの読み込み順が違う

TypeErrorは「値はあるが使い方が違う」ことが多く、ReferenceErrorは「名前自体が見つからない」ことが多いです。

SyntaxError

SyntaxErrorは、JavaScriptの文法として読めない時に出ます。

if (count > 0 {
  console.log("ok");
}

この例では、) が足りません。

SyntaxError: Unexpected token

よくある原因:

  • 括弧の閉じ忘れ
  • カンマ不足
  • クォートの閉じ忘れ
  • JSONではない文字列をJSONとして読んだ
  • コードフェンスやテンプレート文字列の崩れ

SyntaxErrorは、実行前に止まることがあります。まず該当行の前後を見ます。

読む順番

Consoleにエラーが出たら、次の順番で見ます。

  1. エラー名
  2. メッセージ
  3. ファイル名
  4. 行番号
  5. 該当行の変数

例:

TypeError: Cannot read properties of undefined (reading 'title')
    at renderPost (main.js:18:12)

この場合は、renderPost の18行目で、undefined.title のようなことが起きている可能性があります。

console.logで確認する

原因が分からない場合は、直前で値を出します。

console.log(post);
console.log(post?.title);

値が undefined なのか、プロパティ名が違うのかを確認します。

実践メモ: エラー名は入口です。実際には、行番号の直前で「どの値が想定と違うか」を見るのが大事です。

まとめ

TypeErrorは値の使い方、ReferenceErrorは名前の参照、SyntaxErrorは文法の問題です。

Consoleでは、エラー名、メッセージ、ファイル名、行番号を分けて読みます。よく分からない時は、該当行の直前で値を確認します。

次に読む記事

← 一覧に戻る
PR
PR
PR
PR