if else声明反转

时间:2016-03-27 08:18:46

标签: javascript if-statement conditional

我想要的结果是第二个if else语句如果代码不在列表然后提醒,我不明白为什么第一个if else语句失败,我以为只是反向第二个if else语句?我误解了一些事情吗?

https://jsfiddle.net/e6qohvhc/

var code = '500';

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

4 个答案:

答案 0 :(得分:4)

您可能需要查看Morgan's laws

基本上,如果你想否定(a || b || c),你需要使用(!a && !b && !c)

希望它有所帮助,

答案 1 :(得分:4)

这与De Morgan's laws

有关

如果要反转语句,则必须反转每个运算符。

#define int int64_t #define char char32_t // Is this unsigned? #define short int32_t #define long __int128 变为!aa变为b!b变为||&&变为&&

因此,您的第二个||的反转将类似于

if

答案 2 :(得分:0)

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

总是如此,因为变量不能等于多个值

答案 3 :(得分: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");
}