JavaScript
Uncaught SyntaxError: Illegal return statement
関数の外でreturnを使っている
こんな症状
returnを書いた行で「Illegal return statement」と表示される。returnが関数の外にあるときに起きるよ。波括弧の閉じ忘れが原因のことも多いよ。
まず試す
その return を関数の中に入れる。波括弧 {} の対応がズレて return が関数の外に出ていないか確認する。
js
// ❌ 関数の外で return
return score;
// ✅ 関数の中なら OK
function checkScore(score) {
return score;
}これで直らなければ、下の「自分のケース」を確認。
🔍 自分のケースはどれ?
- ✓トップレベル(関数の外)に return を書いた
→ 処理を関数で包むか、return ではなく if/else で分岐させる。 - ✓波括弧 {} の対応がズレている
→ } を1つ多く書くと以降が関数の外扱いに。VS Codeで括弧をクリックして対応を確認する。 - ✓if 文だけで囲んで return した
→ if は関数ではない。関数の中に入れる。値を外に渡すなら変数に代入する。
なぜ起きる?
return文は関数の中でしか使えないよ。ファイルのトップレベル(関数の外)にreturnを書くとこのエラーになるんだ。見落としやすいのは波括弧{}の対応ミスで、関数の途中で}を1つ多く書いてしまうと、それ以降のreturnが「関数の外」扱いになるよ。if文だけで囲んだコードにreturnを書いたときにも起きるよ(if文は関数ではないからね)。
✕ エラーが起きるコード
const score = 80;
if (score >= 60) {
console.log('合格');
}
return score; // ← 関数の外なのでエラー
// Uncaught SyntaxError: Illegal return statement✓ 直したコード
function checkScore(score) {
if (score >= 60) {
console.log('合格');
}
return score; // ← 関数の中ならOK
}
checkScore(80);✅ 直ったか確認
保存して再読み込み。SyntaxError が消え、関数が期待どおり値を返せばOK。
この解決法は役立ちましたか?
🔗 関連するエラー
- Uncaught SyntaxError: Identifier 'x' has already been declared — 同じ変数名を2回宣言している
- Uncaught SyntaxError: missing ) after argument list — 関数呼び出しの括弧が閉じていない
- Uncaught TypeError: Cannot read properties of null (reading 'addEventListener') — 取得しようとしたHTML要素が見つかっていない
- Uncaught ReferenceError: Cannot access 'x' before initialization — let/constの宣言前にアクセスしている
- Invalid left-hand side in assignment — 代入できないものに代入しようとしている
🔗 別カテゴリの関連エラー
📖 この問題を学べるレッスン
✏️ 手を動かして練習
📝 関連ブログ記事
- プログラミングのエラーメッセージの読み方 — エラーの読み方を基礎から解説
- JavaScriptとは?初心者向けにわかりやすく解説 — 変数・関数・イベントの基本
- JavaScriptでボタンクリックを動かす方法 — ボタンクリック時の動作を解説