JavaScript: if 文で波括弧を省略する場合の注意点
JavaScript では、if 文の処理は通常、波括弧(中括弧)で囲みます。
// 波括弧(中括弧)で囲む場合
if (a == b) {
c = 0;
}
// 又は
if (a == b) { c = 0;}
但し、処理が1文の場合は波括弧(中括弧)を省略することができます。
// 波括弧(中括弧)を省略した場合
if (a == b)
c = 0;
// 又は
if (a == b) c = 0;
そして、「波括弧(中括弧)は省略すべきでない」という意見もあるようですが、 これに関して正解はありません。
個人的には、「明らかに波括弧がない方が見やすい」場合は省略して、 そうでない場合は省略しない方がよいと思っています。
でもそれを他人に押し付ける気は全然ありません。
但し、波括弧(中括弧)を省略した場合、 意図しない動作をしてバグの原因となるケースもありますので注意が必要です。
波括弧(中括弧)を省略して、バグの原因となるケース
次のサンプルコードは、if 文を入れ子にして、波括弧(中括弧)を省略しています。
else 句がどの if と対応しているかを考えてみてください。
if (条件式1)
if ( 条件式2)
処理A
else
処理B
一見、「if (条件式1)」 と「else」が対応しているように見えます。
ですが、JavaScript の文法上、else 句は直近の if に対応します。
ですから、この場合は、次のように解釈されてしまいます。
if (条件式1) {
if (条件式2) {
処理A
} else {
処理B
}
}
このように、if 文を入れ子にした場合、波括弧(中括弧)を省略すると、 自分の意図しない動作の原因となります。
このようなケースでは、必ず波括弧(中括弧)をつけるように注意してください。