menu
ホーム > javascript > JavaScript セミコロン『 ; 』

JavaScript セミコロン『 ; 』

JavaScriptリファレンス

JavaScript の セミコロン

;(セミコロン)

JavaScrip において、「;(セミコロン)」 は、文(=ステートメント)の区切りを意味します。JavaScript は「;(セミコロン)」を見つけると、セミコロンの前の文が終了し、次の文は異なる新しい文として認識します。

  • JavaScript
  • ブラウザ
  • html

この記述方法は C言語 や Java言語 Ruby などと同様の記述方法です。JavaScript のライブラリなどで、頭に セミコロン が記述されているのはこのためで、前述の文が終了し、ライブラリのコードが始まることを明示的にしています。
ECMAScript の仕様(2016年版 ECMA-262 7.0 Edition の11.9)

Most ECMAScript statements and declarations must be terminated with a semicolon. Such semicolons may always appear explicitly in the source text. For convenience, however, such semicolons may be omitted from the source text in certain situations. These situations are described by saying that semicolons are automatically inserted into the source code token stream in those situations.

ほとんどのECMAScriptステートメントと宣言は、「;(セミコロン)」で終了する必要があります。 このような「;(セミコロン)」は、常にソーステキストに明示的に表示されます。 ただし、便宜上、特定の状況では、ソーステキストから「;(セミコロン)」を省略することができます。 このような状況では、「;(セミコロン)」は自動的にソースコードトークンストリームに挿入されます。

※ECMAScriptステートメント
(空文、レット、定数、インポート、エクスポート宣言、変数ステートメント、式ステートメント、デバッガーステートメント、継続ステートメント、ブレークステートメント、リターンステートメント、スローステートメント、など)

セミコロンの省略

「;(セミコロン)」の省略

上述したように、通常、文の最後には「;(セミコロン)」を挿入しますが、JavaScript では、行末 が 文末 を意味し、行末 に「;(セミコロン)」を挿入しなくても文が終了したことになります。つまり、「\n(行末)」と「;(セミコロン)」は同じ意味になるのです。その結果、「\n(行末)」では「;(セミコロン)」を省略することが可能です。文と文 が 改行 で区切られていれば、文末 に「;(セミコロン)」を挿入しなくてもエラーになりません。これは、 JavaScript の 自動セミコロン挿入(ASI=Automatic Semicolon Insertion) 機能です。

  • JavaScript
  • ブラウザ
  • html

同一行に複数文の場合は省略不可

同じ行に複数の文を記述する場合は、「;(セミコロン)」を省略することは出来ません。

  • JavaScript
  • ブラウザ
  • html

セミコロン を省略した場合の予期せぬエラー

初心者の方は、セミコロンを省略しない記述に慣れた方が良いと思います。忘れずに記述するようにしましょう。Google JavaScript Style Guide においても、以下のように説明されています。

常にセミコロンを使います.
コードのセミコロンを省き, セミコロンの挿入を処理系に任せた場合, 非常にデバッグが困難な問題が起こります. 決してセミコロンを省くべきではありません.

return文での誤った解釈

例えば以下のコードを見てみて下さい。

上記コードは、JavaScript の自動セミコロン挿入(ASI=Automatic Semicolon Insertion) 機能によって return の後に セミコロン が挿入され、

のように解釈されます。記述者の意図が

であれば、誤った解釈であり、誤動作に繋がります。

後置演算子の ++ や — での誤った解釈

後置演算子の ++ や — は、演算子の対象と同じ行に記述する必要があります。以下のコードを見てみましょう。「++(インクリメント演算子)」は、 b に対して加算することになります。

  • JavaScript
  • ブラウザ
  • html

このように解釈あれてしまうのです。

まとめ

プログラムの無駄な冗長を無くすことは重要ですが、予期しないエラーを発生させるような記述は避けるべきです。JavaScript の 自動セミコロン挿入(ASI=Automatic Semicolon Insertion)の挙動を理解し、その上で最善のコードの記述を心がけましょう。


タグ(=記事関連ワード)

タグ:

日付

投稿日:2018年6月11日
最終更新日:2018年06月12日

関連記事

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://wepicks.net/jsref-semicolon/trackback/

page top