2016-03-27 195 views
1

我想要的结果是第二如果else语句如果代码不在列表中然后警报,我不明白为什么第一个if else语句失败,我认为只是反向第二如果else语句?我误解了一些事情?如果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

我不知道理解你的问题,但布尔!(A || B)是!一个&&!b –

回答

4

这与De Morgan's laws做:如果你想颠倒,你必须声明

倒置每个操作员。

!a变得ab变得!b||变得&&&&变得||

所以你的第二个if会是这样的反转像

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

感谢您的解释! – user1575921

4

您可能需要检查Morgan's laws

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

希望它能帮助,

+0

感谢的答复,所以我应该这样做'(代码!= '400' &&代码!='401'&& code!='500')' – user1575921

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

永远是正确的,因为一个变量不能等于多个值

0

问题是|| 第一个if语句对于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"); 
}