1

次のようにifステートメントを書くことは可能ですか?

if(a === 0 && (b === 0 || c === 0)){
    if(b === 0 && c === 0){
        //a, b, and c are equal to 0
    }
    else if(b === 0){
        //only a and b are equal to 0
    }
    else {
        //only a and c are equal to 0
    }
}
else {
    //a doesn't equal 0, but b or c could so we test those
}

同様の方法で書かれた私のコードでは機能していないようです...おそらく私はこれを間違って書いていますか?それは私の頭の中で理にかなっています。このような混乱を避けるために、コードをどのように構成できますか?

4

3 に答える 3

2

私はあなたの他を修正しました:

if(a === 0 && (b === 0 || c === 0)){
    if(b === 0 && c === 0){
        //a, b, and c are equal to 0
    }
    else if(b === 0){
        //only a and b are equal to 0
    }
    else {
        //only a and c are equal to 0
    }
}
else {
    //   a === 0 and neither b nor c === 0,
    //or a!==0 and neither b nor c === 0,
    //or a!==0 and either b or c or both === 0 
}

私の提案:

if(a === 0 && (b === 0 || c === 0)){
    if(b === 0 && c === 0){
        //a, b, and c are equal to 0
    }
    else if(b === 0){
        //only a and b are equal to 0
    }
    else {
        //only a and c are equal to 0
    }
} else if (a === 0) {
    //a === 0 and neither b nor c === 0,
} else {
    //   a!==0 and neither b nor c === 0,
    //or a!==0 and either b or c or both === 0 
}

また、ビット演算を検討することもできますが、より明確になる可能性があります。Saludos、

于 2013-02-25T18:48:06.813 に答える
2

私はそれを別のコーディング方法で書いたでしょうが、あなたが投稿したものは期待どおりに機能します

http://jsfiddle.net/u2ert/

a=0;
b=0;
c=0;

if(a === 0 && (b === 0 || c === 0)){
    if(b === 0 && c === 0){
        alert("//a, b, and c are equal to 0");
    }
    else if(b === 0){
        alert("//only a and b are equal to 0");
    }
    else {
        alert("//only a and c are equal to 0");
    }
}

異なるアサーションをテストするために最初の3行を変更します

于 2013-02-25T18:51:09.297 に答える
0

なぜあなたがコードで書くことができるものをコメントに書くのですか...?

if(a === 0 && (b === 0 || c === 0)){
    if(a === 0 && b === 0 && c === 0){

    }
    else if(a === 0 && b === 0){

    }
    else if (a === 0 && c === 0 ) {

    }
    else {
        console.log("Boolean logic wrong: " + (a===0) + ", " + (b===0) + ", " + (c===0)
        // throw error
    }
}
else {
// print out the values of a, b, c here if you are confused
}

さらに、これは自己デバッグであるため、ブール論理で混乱することはありません。

于 2013-02-25T18:45:44.460 に答える