条件式についての質問

このQ&Aのポイント
  • ifの条件式についての質問です。
  • 質問の内容は、宣言⇒ifに処理が流れた時、条件式の内容についてです。
  • 質問者は、条件式が全てtrueになるかどうかについて確認したいようです。
回答を見る
  • ベストアンサー

ifの条件式 !について

以下処理があります。 1.宣言、初期化 var A = new Array(); A[1] = A[2] = A[3] = false; 2.条件判断 if(!A[1] && !A[2] && !A[3]){ A[1] = $A[2] = A[3] = true; }else{ 処理 } } 質問:宣言⇒ifに処理が流れた時、条件式の内容は ・A[1]の否定⇒A1は、falseが格納されているので、否定でtrue。 ・A[2]の否定⇒A1は、falseが格納されているので、否定でtrue。 ・A[3]の否定⇒A1は、falseが格納されているので、否定でtrue。 よって、 if(true && true && true){ A[1] = $A[2] = A[3] = true; } で結果、配列の1~3は、全てfalseから、trueに変更されるという考えで間違っていないでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

今回のロジックでおおむね問題ありませんが ブラウザによってはfalseと0を同意とする場合とそうでない場合があります もし厳密に比べたいなら!で安易に評価しないことです >if(!A[1] && !A[2] && !A[3]){ if(A[1]===false && A[2]===false && A[3]===false){

kureakai
質問者

お礼

情報ありがとうございます。 >ブラウザによってはfalseと0を同意とする場合とそうでない場合があります。 そういうこともあるのですね。 参考になりました。 >if(A[1]===false && A[2]===false && A[3]===false){ 条件式まで追記して頂き、ありがとうございました。

その他の回答 (1)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

はい,正しいです。

kureakai
質問者

お礼

ありがとうございます。 すっきりしました。

関連するQ&A

  • if文条件式で配列を使用したい

    if文条件式で配列を使用したい 例えば open (FH, "<data.dat"); @list = <FH>; で不確定要素数を@listに格納したあと if文でその@list内でマッチングする物があればそれだけ表示させたいのですが #ここでは比較対象をabcとして foreach(@list){ if( abc eq @list){ } } としてもtrue処理が出来ません。 どの用に条件を書けばよいのでしょうか?

    • ベストアンサー
    • Perl
  • if文の中で否定演算子を使うことについて

    PHPの勉強をしています。 今、基礎的な内容の本とより実践的な内容の本、コードサンプルが満載の本の 計3冊で勉強しておるのですが、 たまたまなのかわかりませんが、この三冊の中ででてくるコードを見てみると、 if文の中に否定演算子、例えば IF(!A || !B) {   A、もしくはBがfalse だったのが反転してTrueになった場合の処理 }else {   A、Bどちらともtrueだったのが反転してfalseになった場合の処理 } といった条件文に否定演算子を含めたコードサンプルがほとんどです。 。。。。三冊ともこの調子なので もしかしてPHPのコーティング作法なのかな?と思いましたが ネットで検索してもそれらしい情報は見当たらず...... 自分が何がわからないのか それ自体よくわかってないのかもしれませんが IF文を使う際、条件に否定演算子を使うべきときってのがあるんだと思います。 となると、その時を判断する基準などがあるのでしょうか? 初心者なのでなにか重大な思い違いをしてるのではないかと思ってます。 なにか気づくことがあれば教えてください。

    • ベストアンサー
    • PHP
  • ActionScriptでの配列について

    var table:Array=["A1","A2"]; と配列を宣言しています。 他のレイヤーでこの配列の値を取得し onClipEvent(load){ for(i=0;i<=_root.table.length;i++){ if(_root.table[i] == "A1"){ //処理1     }else{ //処理2 } というようにその配列の値があれば処理1をなければ処理2をするプログラムを書きたいのですが・・。 rootの配列を読み込むやりかたを教えていただきたいです。 どなたかアドバイスいただけると助かります。

  • 条件分岐(if)について

    条件分岐(if)についてお聞きしたことがあります。 例えば if($a == 'A' || $a == 'B'){ 処理 }else if($a == 'C' || $a == 'D' || $a == 'E'){ 処理 }............... といった条件分岐があったとて、お聞きしたいことが2点あります。 ・条件分岐この後も数十個続いたとします。その場合もelse ifで一つ一つ 条件を書かなければならないのでしょうか? ・条件式if($a == 'A' || $a == 'B'....)が長くなる場合プログラムが見にくくなるので 別途に条件式を書いておいてif文の所では($a == ◯)といったように簡潔に書くことは できないのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 配列の比較について

    Javascritpで配列全体の比較を行いたいのですが 下の結果が「違います」のように表示させたいのです。 比較の部分はどのように書いたらよいのでしょうか? var a1 = new Array(); var a2 = new Array(); a1['a'] = 1; a1['c'] = 2; a2['a'] = 1; a2['c'] = 3; //=========== 以下の配列の比較方法 if (a1 == a2){ alert('同じです'); } else { alert('違います'); }

  • 空の配列を示す方法

    Flash8を使用して、ActionScript2を書いています。 if文を用いて、「変数my_array(配列)が空の配列でない場合は~」 という条件分岐を書きたいのですが、 空の配列を示す方法がわかりません。 var my_array:Array = new Array(); とした上で、 if (my_array == null) { trace("null"); } else { trace("違う"); } と書いて調べてみたのですが、 nullでもundefinedでも""でも[]でも「違う」と表示されてしまいます。 「空の配列でない場合」という条件を書く方法はあるでしょうか?

    • ベストアンサー
    • Flash
  • if else文のフローチャート

    c言語です。 if else文のフローチャートを教えてほしいです。 Trueの場合は処理1、Falseの場合は処理2を実行したいです。 最初に条件と書きます。

  • Javascriptの配列の便利な処理

    Javascriptの配列で以下のような処理は自分で作らないといけないのでしょうか? var csv = 'A,B,C,D'; var ary new Array(); ary = csv.split(','); 要素の有無 true/false ary.exists('A') 結果 true 要素の削除 ary.delete('A') 結果 ary = ['B', 'C', 'D'];

  • if~else ifの処理を配列とループを使用して記述したい

    aのときはAの処理、bのときはBの処理、cのときはCの処理をを行い、ただし条件が真になったら以降の条件を判断しないといった処理(1)を、ループを用いて実現したいと考えております。 色々と試行錯誤したのですが(2)、なかなか実現することができず、困っております。 つきましては恐れ入りますが、正しい記述方法をご教授いただけないでしょうか。JAVAスクリプト全くの初心者ですが、何卒よろしくお願いいたします。 (1) txt = "abcd";//判断対象文字列 data0=txt.match(/a[^\&\"]*d/im); data1=txt.match(/a[^\S<>\&\"]*b/im); data2=txt.match(/b[^\S<>\&\"]*c/im); alert0="A"; alert1="B"; alert2="C"; //条件が合致しない時は警告を発し、合致する時には指定ページを表示します。 if (!data0) {alert(alert0)}; else if (!data1){alert(alert1)}; else if (!data2){alert(alert2)}; else location.href = "ok.htm"; 以上の処理をループを用いて実現したいと考え、一応以下のように記述してみたのですが、動作しませんでした。また、条件が真になったら、以降の条件を判断しない方法も分かりません。何卒よろしくお願いいたします。 (2) for(a=0;a<=2;a++){ var aler=new Array(2); var data=new Array(2); aler[0]=alert("A"); aler[1]=alert("B"); aler[2]=alert("C"); txt = "abcd"; data[0]="(/a[^\&\"]*d/im)"; data[1]="(/a[^\S<>\&\"]*b/im)"; data[2]="(/b[^\S<>\&\"]*c/im)"; if (!txt.match data[a]) { aler[a]; } else location.href = "ok.htm"; }

  • この配列は何?

    ホームページビルダーでロールオーバーのスクリプトを自動で書き出したものの一部ですが、 理解不能のところがあります。 以下がスクリプト var swImg; swImg=new Array; function HpbImgPreload() { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var imgName = HpbImgPreload.arguments[0]; var cnt; swImg[imgName] = new Array;//←ここです for (cnt = 1; cnt < HpbImgPreload.arguments.length; cnt++) { swImg[imgName][HpbImgPreload.arguments[cnt]] = new Image(); swImg[imgName][HpbImgPreload.arguments[cnt]].src = HpbImgPreload.arguments[cnt]; } } } } HpbImgPreload('_HPB_ROLLOVER1', 'rollover_n_image.gif', 'rollover_m_image.gif'); 以下がボディ <BODY> <P><A href="#" id="_HPB_ROLLOVER1" onmouseout="HpbImgSwap('_HPB_ROLLOVER1','rollover_n_image.gif');" onmouseover="HpbImgSwap('_HPB_ROLLOVER1','rollover_m_image.gif');"><IMG border="0" name="_HPB_ROLLOVER1" src="rollover_n_image.gif"></A></P> </BODY> このswImgの配列は[]の中が数値でないようですが、これは特殊な配列ですか? swImg[imgName] = new Array; どなたか初心者にも分かるように説明していただけるとありがたいです。

専門家に質問してみよう