2016-03-27 11 views
1

私が望む結果は2番目のelse文であり、リストにないコードならば警告です。なぜ最初のelse文が失敗するのでしょうか?私はいくつかのことを誤解していますか?あなたはMorgan's lawsを検討する必要があるかもしれませんもしelse文が逆であれば

https://jsfiddle.net/e6qohvhc/

var code = '500'; 
 

 
    if (code != '400' || code != '401' || code != '500') { 
 
    \t console.log('true'); // I don't want it alert here 
 
    } 
 
    
 
    
 
    if (code == '400' || code == '401' || code == '500') { \t 
 
     // I have to always leave this empty line ... 
 
    } else { 
 
    console.log('second true'); 
 
    }

+1

私はあなたの質問を理解することはわからないんだけど、ブールが!(|| B)!返信用B –

答えて

4

、それが役に立てば幸い:

あなたが声明を反転したい場合は、する必要がすべてのオペレータを反転させます。

!ab&&||なり、||&&なり、!bとなり、aになります。

だからあなたの第二ifの反転はif文

(code != '400' && code != '401' && code != '500') 
+0

説明をありがとう! – user1575921

4

あなたが(a || b || c)を否定したい場合は基本的に、あなたは(!a && !b && !c)

を使用する必要があります。これは、De Morgan's lawsに関係している

+0

感謝!&&ですので、私はこの '(コード!= '400' &&コードを実行すべきです!= '401' && code!= '500') ' – user1575921

0
if(code != '400' || code != '401' || code != '500'){} 

ような何かの変数が複数の値に等しいことカントので、常にtrueになります

0

問題が|| まずあるだろう500は常に真です、それはあなたが問題を抱えている理由です/ このようにしてください、それはあなたがそれを望んでいた方法で動作するはずです。ウルフィドル);

var code = 500; 
alert(code); 
console.log(code); 
if (((code !== 400) || (code !== 401)) && (code !== 500)) { 
    console.log('true'); 
    alert("123"); 
} 

else if ((code == 400) || (code == 401) || (code == 500)) { 
    alert("456"); 
} else { 
console.log("second true"); 
alert("else"); 
}