JavaScript Uncaught SyntaxError の原因と解決方法【初心者向け完全ガイド】
JavaScriptを書いていると、ブラウザのコンソールに「Uncaught SyntaxError」というエラーが表示されることがあります。このエラーは多くの初心者を困らせる厄介な問題ですが、原因を理解すれば簡単に解決できます。
この記事では、Uncaught SyntaxError の原因から解決方法、よくある間違いまでを詳しく説明します。
そもそも Uncaught SyntaxError とは?
Uncaught SyntaxError(未検出の構文エラー)は、JavaScriptの文法が正しくないときに発生するエラーです。これはランタイムエラーではなく、コードの構文が間違っているために起こります。
「Uncaught」という言葉は「キャッチされていない」という意味で、つまりエラー処理されずにそのままブラウザに表示されているという状態を示しています。
Uncaught SyntaxError の主な原因
1. 括弧のペアが合っていない
最も一般的な原因は、括弧(カッコ)の開閉がマッチしていないことです。JavaScriptでは、次の3種類の括弧を使用します:
- 丸括弧 ( )
- 角括弧 [ ]
- 波括弧 { }
これらのいずれかが閉じられていないと、SyntaxError が発生します。
2. セミコロンの欠落
JavaScriptではセミコロンが省略可能な場合もありますが、特定の場面では必須です。セミコロンの位置が間違っていると構文エラーが発生します。
3. クォートのペアが合っていない
文字列を定義する際に使用するシングルクォート(’)やダブルクォート(\”)、またはバックティック(`)が正しくペアになっていないとエラーになります。
4. キーワードの誤り
JavaScriptのキーワード(if、for、function など)を誤字すると SyntaxError が発生します。
5. 予期しない識別子
変数名や関数名が不正な文字で始まっている、または予約語を変数名として使用している場合に発生します。
エラーメッセージの読み方
ブラウザのコンソールに表示されるエラーメッセージは、問題の場所を特定するヒントになります。例えば:
「Uncaught SyntaxError: Unexpected token ‘}’」
このメッセージは「予期しない } が見つかった」という意味で、波括弧の閉じ方に問題があることを示唆しています。
Uncaught SyntaxError の解決手順
ステップ1:エラー位置の特定
ブラウザのコンソール(F12キーで開くデベロッパーツール)を確認し、エラーメッセージに表示されたファイル名と行番号を確認します。
ステップ2:該当行の確認
エラーが示された行とその前後のコードを注意深く確認します。多くの場合、エラーメッセージが指す行の直前に問題があります。
ステップ3:括弧とクォートの確認
以下を順番にチェックします:
- すべての開き括弧に対応する閉じ括弧があるか
- 文字列のクォートが正しくペアになっているか
- セミコロンが適切な位置にあるか
ステップ4:コードの修正
問題を特定したら、該当部分を修正します。
ステップ5:ページの再読み込み
修正後、ブラウザをリロード(F5 または Ctrl+R)して、エラーが消えたか確認します。
具体的なコード例と解決方法
例1:波括弧が閉じられていない
❌ エラーコード:
function greetUser(name) {
console.log(\"Hello, \" + name);
// 波括弧を閉じ忘れている
✅ 修正後:
function greetUser(name) {
console.log(\"Hello, \" + name);
}
例2:文字列のクォートが正しくペアになっていない
❌ エラーコード:
const message = \"Hello World;
console.log(message);
✅ 修正後:
const message = \"Hello World\";
console.log(message);
例3:配列の括弧が正しくない
❌ エラーコード:
const numbers = [1, 2, 3, 4, 5;
console.log(numbers);
✅ 修正後:
const numbers = [1, 2, 3, 4, 5];
console.log(numbers);
例4:オブジェクトの波括弧が正しくない
❌ エラーコード:
const user = {
name: \"Taro\",
age: 30
// 波括弧を閉じ忘れている
console.log(user);
✅ 修正後:
const user = {
name: \"Taro\",
age: 30
};
console.log(user);
例5:if文の括弧エラー
❌ エラーコード:
const age = 20;
if (age >= 18 {
console.log(\"成人です\");
}
✅ 修正後:
const age = 20;
if (age >= 18) {
console.log(\"成人です\");
}
例6:バックティックの使用ミス
❌ エラーコード:
const name = \"Hanako\";
const greeting = `Hello, ${name;
console.log(greeting);
✅ 修正後:
const name = \"Hanako\";
const greeting = `Hello, ${name}`;
console.log(greeting);
よくある間違い
間違い1:複数言語のクォートを混在させる
シングルクォートで開いた文字列をダブルクォートで閉じるという間違いです。
// ❌ エラー
const text = 'Hello World\";
// ✅ 正解
const text = 'Hello World';
間違い2:if文やループ文の後の括弧を忘れる
if、for、while などの制御構文では、条件部分を丸括弧で囲む必要があります。
// ❌ エラー
if x > 5 {
console.log(\"大きい\");
}
// ✅ 正解
if (x > 5) {
console.log(\"大きい\");
}
間違い3:オブジェクトのキーと値の区切り文字を誤る
オブジェクトではキーと値を「:」(コロン)で区切ります。「=」を使うとエラーになります。
// ❌ エラー
const obj = {
name = \"Jiro\"
};
// ✅ 正解
const obj = {
name: \"Jiro\"
};
間違い4:関数呼び出しの括弧を忘れる
関数を実行する場合は、関数名の後に () をつけます。
function sayHello() {
console.log(\"Hello\");
}
// ❌ エラー(括弧を忘れている)
sayHello;
// ✅ 正解
sayHello();
間違い5:アロー関数の矢印(=>)を誤る
アロー関数では「=>」を使用します。「->」や「=>」以外の記号は使えません。
// ❌ エラー
const add = (a, b) -> a + b;
// ✅ 正解
const add = (a, b) => a + b;
デバッグのコツ
テンプレートリテラル内の確認
バックティックを使用したテンプレートリテラルでは、${} の中に式を記述します。ここの括弧も正しくペアになっている必要があります。
// ❌ エラー
const result = `結果: ${getValue(}`;
// ✅ 正解
const result = `結果: ${getValue()}`;
エディタの機能を活用する
VS Code などのエディタは、括弧のペアをハイライトする機能があります。この機能を活用すると、括弧のエラーを素早く見つけられます。
コードのインデントを確認
適切にインデントされたコードは、視覚的に括弧の対応関係を把握しやすくなります。
一行ずつの修正
複数の構文エラーがある場合は、一つずつ修正して、その都度ブラウザをリロードして確認すると効率的です。
SyntaxError を予防する方法
リンターの使用
ESLint などのコード分析ツール(リンター)を導入すると、構文エラーを事前に検出できます。
フォーマッターの導入
Prettier などのコードフォーマッターを使用すると、コードの整形が自動化され、エラーが減ります。
IDEの支援機能
Visual Studio Code などのIDE(統合開発環境)は、リアルタイムで構文エラーを指摘します。
習慣的な確認
コード作成後すぐにコンソールを確認する習慣をつけると、エラーを早期に発見できます。
複雑なコード例での解決
複雑な例:ネストされたオブジェクトと配列
// ❌ エラーコード(波括弧が正しくペアになっていない)
const data = {
users: [
{
id: 1,
name: \"Alice\",
tags: [\"admin\", \"user\"
},
{
id: 2,
name: \"Bob\",
tags: [\"user\"]
}
]
}; // 最初のオブジェクトの tags 配列が閉じられていない
// ✅ 修正後
const data = {
users: [
{
id: 1,
name: \"Alice\",
tags: [\"admin\", \"user\"]
},
{
id: 2,
name: \"Bob\",
tags: [\"user\"]
}
]
};
エラーメッセージ別の対応方法
「Unexpected end of input」
このメッセージは、ファイルの最後で括弧が閉じられていないことを示します。ファイル全体の括弧を確認してください。
「Unexpected token」
予期しないトークン(文字や記号)が見つかったという意味です。その行とその前の行を特に注意深く確認してください。
「Missing ) after argument list」
関数の引数リストの後に ) が必要という意味です。関数呼び出しの括弧を確認してください。
ブラウザコンソールの効果的な使い方
デベロッパーツール(F12)を開くと、コンソールタブで詳細なエラーメッセージが表示されます。このメッセージには:
- エラーの種類
- 詳細な説明
- エラーが発生したファイル名
- エラーが発生した行番号
これらの情報を活用することで、問題を素早く解決できます。
学習中のベストプラクティス
シンプルなコードから始める
複雑なコードを書く前に、基本的な構文を習得してください。
コードを段階的に追加する
大量のコードを一度に作成するのではなく、少しずつ追加して、その都度テストすることをお勧めします。
テンプレートを活用する
基本的なJavaScriptのテンプレートを用意して、それを基に開発するとエラーが減ります。
// 基本的なテンプレート
(function() {
'use strict';
// ここにコードを書く
})();
まとめ
JavaScript の Uncaught SyntaxError は、初心者が頻繁に遭遇するエラーですが、その原因は限定的です。主な原因は以下の5つです:
- 括弧(()、[]、{})のペアが合っていない
- セミコロンが正しい位置にない
- クォート(’、\”、`)がペアになっていない
- キーワードの誤り
- 予期しない識別子
解決方法も単純で:
- エラーメッセージの行番号を確認
- その行とその前後を注意深く見る
- 括弧やクォートが正しくペアになっているか確認
- 修正してブラウザをリロード
最初は、エラーが発生するたびに、このガイドを参照してください。繰り返すうちに、構文エラーを避ける習慣が身につき、より効率的にコードを書けるようになります。
また、VS Code などのエディタやリンターツールを活用することで、エラーの予防と早期発見ができます。これらのツールはプロフェッショナルな開発でも使用されているので、早いうちから慣れておくことをお勧めします。
JavaScriptの学習で SyntaxError に悩まされていたら、焦らず、一つずつ確認していくことが大切です。きっとすぐに解決できますよ!

