JavaScriptの文末にセミコロン「;」が必要な理由とそのルールをわかりやすく解説!

こんにちは。ゆうせいです。
今回は「JavaScriptで文末にセミコロン(;)を付ける必要があるのはどんな時か?」について、新人エンジニアの方にもわかるように、やさしく丁寧に解説していきます。


なぜセミコロンが必要なのか?

JavaScriptでは、文(ステートメント)の終わりを示すために セミコロン(;) を使います。
これは、日本語の「。」にあたるものだと思ってください。

しかし、実はJavaScriptには 自動セミコロン挿入(ASI:Automatic Semicolon Insertion) という仕組みがあります。
このおかげで、セミコロンを省略しても動くコードがたくさんあるんです。

でも……
「動く」と「安全」は別の話!
セミコロンを付けないことで、予期せぬバグにつながることもあるんです。


セミコロンが「絶対に必要」なケース

では、どんなときにセミコロンを付けなければいけないのでしょうか?

1. 複数の文を1行に書くとき

let a = 1; let b = 2;

→ セミコロンがないと、JavaScriptはどこで区切っていいか分かりません。

2. returnbreakcontinue のあとに値を書くとき

function getValue() {
  return
  {
    value: 1
  }
}

これは バグの元!

実際に実行されるのはこういう意味になります:

return; // ここで終わってしまう
{
  value: 1 // 到達しない
}

return と値の間に 改行 があると、JavaScriptは自動でセミコロンを挿入してしまいます。

3. 即時関数(IIFE)を使うとき

let result = 10
(function() {
  console.log('実行される')
})()

これも注意!

上のコードでは 10(function()...) と解釈されてしまい、エラーになります。
解決策:

let result = 10;
(function() {
  console.log('実行される')
})()

→ セミコロンで区切られていれば安心!


セミコロンを付けないとどうなるか?

例:セミコロンなしの罠

let a = b + c
(d + e).print()

JavaScriptの解釈:

let a = b + c(d + e).print();

→ まったく違う意味になってしまうことも!


セミコロンを付けても問題ないなら、付けるのが安全!

初心者のうちは特に、「セミコロンは常につける」というスタイルをおすすめします。
たとえるなら、「横断歩道では青になるまで渡らない」くらい、安全を優先する習慣です。


ASI(自動セミコロン挿入)とは?

最後にちょっとだけ専門用語の解説を。

ASI(Automatic Semicolon Insertion) とは、JavaScriptの仕様で、「セミコロンがないとき、いい感じに補ってくれる機能」です。

ただし、「いい感じ」とは人間にとってではなく、JavaScriptエンジンの解釈基準にとっての“いい感じ”です。

そのため、「意図通りの動作」になるとは限りません。


まとめ表:セミコロンの必要性

状況セミコロン必要?理由
通常の文を1行ずつ書くときなくても動くASIが働くから
文を1行に複数書くとき必要区切りが必要
return や break の後に改行必要ASIが挿入されて意図しない動作になる
即時関数(IIFE)の直前必要前の文と繋がってしまう
他の人が読むコードを書くときあった方が良い明確で安全、レビューもしやすくなる

今後の学習の指針

今後は以下のような観点からも理解を深めていきましょう。

  • JavaScriptの パース(構文解析) の仕組み
  • 他の言語との違い(たとえばPythonやGoなどではセミコロンは不要)
  • ESLintなどの 静的解析ツール を使ったコード品質管理
  • フォーマッター(Prettierなど)を導入して自動整形する方法

まずは、セミコロンをつける習慣をしっかり身につけて、安全で読みやすいコードを書けるようになっていきましょう!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。