JavaScript のセミコロンは省略しない方がいい?

JavaScriptではセミコロンは省略可能
上記の画面の最後の行では「Missing ';'」(セミコロンが抜けている)というメッセージが警告として表示されて
いるのが確認できる。JavaScriptの入門書で「JavaScriptの1文は必ずセミコロンで終わる」と学んできた諸氏に
とっては、これは「警告ではなくてエラーなのではないか」と思われるかもしれない。
 しかし実際には、それぞれの文が改行で区切られてさえいれば、JavaScriptエンジンが適宜セミコロンを補って
解釈してくれるので、JavaScriptにおいては文末のセミコロンは省略可能だ
。従って、以下のようなJavaScriptの
コードは正しく動作する。

JavaScript-20
と書いてある、こんなサイトを見つけた。

果たしてそうなのだろうか?
なんでこんな疑問が出てきたかというとトラックバックで以下のブログ記事を見つけたため。

onclick="return DoWGA(20426);" 最後にセミコロンを追加しただけ
セミコロンの有無でナゼ挙動が変わるのかは理解不能です。

なび堂・メモランダム Microsoft Download Centerがおかしい・解析編

JavaScript は, 安全にセミコロンの存在が推測できる場合を除いて, 文の最後にセミコロンを要求します.
上記の例では関数宣言やオブジェクトや配列リテラルが文の中にあります. 閉じ括弧は文の終わりを表現するものではありません.
次のトークンが()演算子などの場合, JavaScript はそれを前の文の続きとみなしてしまいます
.

これらの挙動は本当にプログラマを驚かせてしまいます. よってセミコロンを徹底すべきです.

Google JavaScript Style Guide 和訳 — Google JavaScript Style Guide 和訳

なんだって!?
これは目から鱗だ

でも、DoWGA の件では次に続くトークンはない。
onclick 内部コードの問題で似たようなことが起こっているのだろうか

おすすめ

1件の返信

  1. ねぎとろまき より:

    IE以外のブラウザは経験上セミコロン無いのを嫌がりますよ。IEだけ何故か通ることはよくありました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です