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 文を入れ子にした場合、波括弧(中括弧)を省略すると、 自分の意図しない動作の原因となります。

このようなケースでは、必ず波括弧(中括弧)をつけるように注意してください。