推しミネラルウォーターはありますか?

javascriptのif文の書き方で。これは参考書の間違い?

画像におけるif文は、下記のように、
中カッコを使って、
書かれるべきなのではないでしょうか?

if(条件式){
//実行するコード
}

※添付画像が削除されました。

A 回答 (1件)

{} (括弧) は省略することも出来ます。



ですので、テキストが間違っているわけではないのですが、「視認性を踏まえて、省略しない方がよい」と主張する人もいます。
括弧の省略は、ショートコーディングを目指す方によく見られますね。

他の人が書くコードを読むときもあるので、いい機会だと思って調べてみました。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma26 …

「ECMA-262 3rd Edition」にると、括弧が省略されると、一つの Statement が実行されるようです。
つまり、

var foo = 'foo';
if(!foo) alert('test'); alert('test2');

これは alert('test2'); が実行されます。
一つのStatementだけを実行するためか、

var foo = 'foo';
if(!foo) alert('test');
alert('test2');

と書いたコードをよく見ますね。

この回答への補足

すみません、分かりました。
!foo の、! を見落としていました。

http://www.site-cooler.com/kwl/jslibrary/6.htm#A …

ここを見て、理解が深まりました。

つまり、参考書のif文では、break;一文が、if文で実行されるコードですよ、
ということなんですね。
それは、中カッコが省略されていることで理解できるわけなんですね。
いやはや、分かりにくかったですが、問題解決です。

補足日時:2010/06/08 01:28
    • good
    • 0
この回答へのお礼

ごめんなさい、さらによく分からなくなってしまいました。。。

中カッコが省略できることは知っているのですが、
それは、条件がTrueのときに実行するコードが1文(それとも1行?)である場合、
のように記憶しています。
さらに、その場合、

if(条件式) 実行コード

というように、1行に収めないとダメだったように思ったのですが、
これは勘違いだったでしょうか。(他の言語と混同している可能性あり)

例として挙げて頂いた、
if(!foo) alert('test'); alert('test2');
については、

>これは alert('test2'); が実行されます。

とありましたが、この場合、
testの方は、アラートされないことになるのでしょうか?

また、

if(!foo) alert('test');
alert('test2');

との違いは、どこにあることになりますでしょうか?

お礼日時:2010/06/08 01:16

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


おすすめ情報