dポイントプレゼントキャンペーン実施中!

セミコロンを付けるケースとつけないケースの違いがわかりません

基本的には 「 ~ ; 」で1つの命令文というのは理解できるのですが、何故、構文(?)にはセミコロンを付けないのでしょうか?

例えば同じ if 構文だとしても
if( ~ ) { }  
"○" == "△" ? 1 : 2 ;

のように 、何故上記はセミコロンを付けなくていいのかがわかりません

A 回答 (2件)

基本的には expression(式) にセミコロンを付けて statement(文) とします。


三項演算子は演算結果が expression なので、statement とするためにはセミコロンが必要です。

ただし、セミコロンが無くても statement であると定義されている構文があり、ご提示の例では「if文」と「ブロック文」が該当します

if文の構文 => if (condition) statement1 else statement2
https://developer.mozilla.org/ja/docs/Web/JavaSc …

ブロック文の構文 => { statement; ... }
https://developer.mozilla.org/ja/docs/Web/JavaSc …

if文の statement1 をブロック文にして else 以降を省略すると、
以下の構文が一つの statement として出来上がります
if (式) { 文; ... }

参考)
JavaScript の statement(文) 一覧
https://developer.mozilla.org/ja/docs/Web/JavaSc …

余談ではありますが、

自動セミコロン挿入によって、セミコロンを省略しても expression が statement と認識される場合がありますのでご注意ください。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
    • good
    • 0

C言語も、Javascriptと同じような感じの「;」ルールになっていますね。


C言語では、文の終わりに「;」をつけるというルールですけど、if (...) { ..} は、C言語では「複合文」とよばれていて、「}」の後ろには「;」はつけないルールになっているそうです。

JavascriptがC言語の構文ルールを真似したとすれば、同じような構文解析ルールが適用されているのだと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!