• ベストアンサー

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

javascriptのif文の書き方で。これは参考書の間違い? 画像におけるif文は、下記のように、 中カッコを使って、 書かれるべきなのではないでしょうか? if(条件式){ //実行するコード }

この投稿のマルチメディアは削除されているためご覧いただけません。
  • march4
  • お礼率83% (628/754)

質問者が選んだベストアンサー

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.1

{} (括弧) は省略することも出来ます。 ですので、テキストが間違っているわけではないのですが、「視認性を踏まえて、省略しない方がよい」と主張する人もいます。 括弧の省略は、ショートコーディングを目指す方によく見られますね。 他の人が書くコードを読むときもあるので、いい機会だと思って調べてみました。 http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/12_Statements.html#section-12.1 「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'); と書いたコードをよく見ますね。

march4
質問者

お礼

ごめんなさい、さらによく分からなくなってしまいました。。。 中カッコが省略できることは知っているのですが、 それは、条件がTrueのときに実行するコードが1文(それとも1行?)である場合、 のように記憶しています。 さらに、その場合、 if(条件式) 実行コード というように、1行に収めないとダメだったように思ったのですが、 これは勘違いだったでしょうか。(他の言語と混同している可能性あり) 例として挙げて頂いた、 if(!foo) alert('test'); alert('test2'); については、 >これは alert('test2'); が実行されます。 とありましたが、この場合、 testの方は、アラートされないことになるのでしょうか? また、 if(!foo) alert('test'); alert('test2'); との違いは、どこにあることになりますでしょうか?

march4
質問者

補足

すみません、分かりました。 !foo の、! を見落としていました。 http://www.site-cooler.com/kwl/jslibrary/6.htm#Abbreviation ここを見て、理解が深まりました。 つまり、参考書のif文では、break;一文が、if文で実行されるコードですよ、 ということなんですね。 それは、中カッコが省略されていることで理解できるわけなんですね。 いやはや、分かりにくかったですが、問題解決です。

関連するQ&A

  • javascript 演算子の「!」_2

    以前 http://okwave.jp/qa/q8280538.html で同じ質問をして、一度は解決かと思ったのですが、考え直すとまた混乱してきたので、 もう一度質問させてください。 以前と同じく http://www.artemis.ac/contents/javascript/javascript10.htm のスロットに関してです。 STEP 2 画像をまわす > ◆SCRIPTタグ内 にある、 if(!$DR[1] && !$DR[2] && !$DR[3]){ についてです。 お聞きしたいのはこのif文の条件式についてです。 このif文はスロットを回したときに実行されるわけですが、 実行される前に $DR[1] = $DR[2] = $DR[3] = false; というコードが実行されています。 お聞きしたいのは、if文の条件はこのコードの影響を受けるのかどうかです。 仮に受けるとした場合、falseを!で否定するので、結果trueとなり、 ドラムが止まっているときという状態と矛盾するので受けないとは思うのですが・・。 よろしくお願いします。

  • if文の条件式について

    iPhone OS 3.0、Xcode 3.1.3という環境でobjective-cをベースとしてiPhone向けアプリケーションを作る研究をしています。 どちらかというとC言語の質問になりますが、if文で使う条件式にNSString型で宣言した文字列を使うにはどうすればいでしょうか? NSString *startArea = [[NSString alloc] initWithFormat:@"pt.x > 224 && pt.y < 100"]; というコードでstartAreaに代入されたpt.x > 224 && pt.y < 100という文字列をif文の条件式として使えればと思ってます。 ちなみに、、、 if( startArea ){ 実行したい命令 } という記述をしたところ、ビルドエラーは発生しませんでしたが条件が無視されてしまいました。 他にコードの間違いがあるかもしれませんが、まずはこの内容で判断をお願いします。

  • javascript if文

    javascript if文 まずソースコードなのですが var num; var sign; num = 20; (1)sign = num >= 0 ? '正' : '負'; console.log( num + "は" + sign ); (2)if(num >= 0){ console.log( num + "は" + sign ); } (1)と(2)は同じ意味なのですか?(1)のやり方はあまり見かけないのですが用途としてはどのような時に使うのですか? 馬鹿な質問でスミマセン。

  • IF文

    (A)IF 条件 THEN 単純実行文1 ELSE 単純実行文2 (B)IF 条件 THEN 実行処理1 ELSE 実行処理2 Aの文では単純実行分なのになぜ改行すると(B)の文みたいに実行処理になるのでしょうか? 実行処理と単純実行文の違いを教えてください

  • if文について

    if文について 初心者です。 if文において、下記のような記述は間違いでしょうか? if(a==1) a=2; よろしくお願い致します。

  • if文について

    最近、C言語プログラムから、離れていて、久しぶりにここを覗いたのですが、 こんな質問を見ました。 質問 C言語初心者だが、学習用に良いサイトはないか? 最初の回答の方は、ある初心者用と思われるサイトを、紹介してらっしゃいました。 それに対して、他の回答者の方々は、そのサイトの一分を引用して、コンパイルできないし、間違っていると指摘されました。それは以下のようなものでした。 if(条件式) 文1; else 文2; その代わりに掲載されているのが次のようなものでした。 if(条件)条件が真のときに実行する1文; else 条件が偽のときに実行する1文; 私には、最初の回答がなぜ間違っているのか、何故コンパイルできないのか、判りません。何方か詳しく教えていただければ、嬉しいです。よろしくお願いします。

  • エクセルのIF文

    基本的な質問ですが、 エクセルのIF文で下記の条件式を教えてください。 A1が1ならばB1には普通と表示、2ならば当座、0ならば空白というIF文を作りたいのですが、どのように作れば良いのでしょうか? よろしくお願い致します。

  • JavaScriptのコードの間違いを教えて

    いつもお世話になっております。 現在、JavaScriptの勉強をしているのですが、if構文のところでつまずいてしまいした。 下のコードがうまく実行できません。 間違いを指摘して頂ければと思います。 <doctype! html> <html lang="ja"> <head>    <meta charset="UTF-8">    <title>Javascript</title> </head> <body> <script type="text/javascript">    var x = window.prompt("好きな値を入力してください","100");    if (x>100)       {window.document.write("100より大きいです");}    else {if(x<100))       {window.document.write("100より小さいです");}       else {if(x=100))          {window.document.write("100です");}       }    } </script> </body> </html> なお、テキストエディタで記述し、実行はGoogleChromeで行いました。 よろしくお願いします。

  • javascript中の記述でのJSP文<%%>

    javascriptの記述中に以下のような分岐文を作成しました。 ただこれを実行したところ、arrの値に関係なくソース下記に記述しているbbの値が代入されてしまいました。 条件によってどちらか片方だけを通り、片方だけを代入したいのですが可能でしょうか。 他の方法があればご教示お願いします。 if(arr[0].checked) <%a= "aa"; %> if(arr[1].checked) <%a= "bb"; %>

  • if文が入れ子の場合の条件の解釈

    以下のようにif文が入れ子の場合についての質問です。 if(条件1){ if(条件2){ 実行内容1 } }else{ 実行内容2 } このような場合、条件1がTrueでも条件2がFalseであれば、実行内容2が実行されるのでしょうか?それともこのような場合、両方の実行内容(実行内容1及び2)が実行されないのでしょうか? もしも、上記で実行内容2が実行されない場合: やはり、条件1がTrueで、かつ、条件2=Trueの場合以外は全て実行内容2が実行されるようにするには、下記のように「and」で条件を繋ぐしかないのでしょうか? if(条件1 and 条件2){ 実行内容1 }else{ 実行内容2 } 「and」で条件を繋ぐ場合、各条件が長いとコードが見にくくて大変不便です。 何か良い方法をお知りでしたら、お教え下さい。記述方法が記載されているサイトのURL等でも結構です。 よろしくお願いします。

    • ベストアンサー
    • PHP