ECMAScript / ECMA-262 Edition 5.1ベースのJavaScript文法
JavaScriptの条件文には、if...else 文と switch case...default 文があります。
if ( 条件式 ) 処理 ; else 処理 ;
JavaScriptのif...else文は、一行で書くことができます。
仕様書上、12.5 if...else文の項だけだと一見、1行でしか記述できない、1行で書いた場合、if文とelse文の間にセミコロンが要らないかのように見えますが、結論からすると複数行に渡って書くこともできますし、そこには、セミコロンが必要となります。
// 処理行が1行の場合 ;
if ( 条件式 ) 処理 ;
else 処理 ;
if ( 条件式 )
処理 ;
else
処理 ;
まず、その位置にセミコロンが必要か否かについては、Statementとは文であり、それ自体が完結して単独で成立する必要があることから、JavaScriptの文には、セミコロンが必要ということになり、仕様書上の記述も、その意を含む記述であることになり(、この場合、微妙な位置なのでセミコロン自動挿入も効かない可能性があり)ます。
if...else文の場合、if文もelse文も文なので2行に渡って記述するのが自然かつ基本スタイルです。(この場合、セミコロンを入れ忘れた際には、セミコロン自動挿入の対象となる可能性があります。)
同様にif文、または、else文の各処理行も適宜セミコロンを入れれば、一行で書くことも可能ですが、複数行に渡って書くこともでき、複数行に渡る場合には、ブロックを使用します。
if ( 条件式 ) { 処理 ; }
if ( 条件式 ) {
処理 ;
}
ブロックを使うとこのようになります。
if ( 条件式 ) { 処理 ; } else { 処理 ; }
if ( 条件式 ) {
処理 ;
} else {
処理 ;
}
if ( 条件式 ) {
処理 ;
}
else
{
処理 ;
}
else文を使用するこのようになります。
但し、C/C++/Javaのようなelse if文、Perlのようなelsif文、bashのようなelif文にあたる文は、ありません。
尚、if文やelse文に別途if(...else)文を使用するといったネスト(入れ子)は可能ですが、その場合には、わかりやすくコーディングしておくのが賢明です。
switch ( 条件判定式 )
{ case 条件値 : 処理 }
JavaScriptの switch 文は、文字 switch に続けて丸カッコ内に条件(判定)の材料となる値が格納された変数や条件判定式などを指定し、コロン":"区切りの分岐条件値と対応する処理のセット全体を波カッコで括り、このように書きます。
switch ( 条件判定式 )
{
case 条件値1 :
処理1
...
処理n
case 条件値2 条件値3:
処理1
...
処理n
default :
処理1
...
処理n
}
異なる条件値から成る case 文は、複数記述することができ、同一の case 文に複数の条件値がある場合には、スペース区切りとします。
default 文は、必須ではありませんが、何れの条件値にもあてはまらない場合の処理を記述することが可能です。