if else 语句反转

if else statement reverse

我想要的结果是第二个 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');
    }

您可能需要查看 Morgan's laws

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

希望对您有所帮助,

这与 De Morgan's laws 有关:

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

!a变成ab变成!b||变成&&&&变成||.

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

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

永远为真,因为一个变量不能等于多个值

问题是|| 首先,如果 500 的语句始终为真,这就是您遇到问题的原因/ 以这种方式进行,它应该会按照您想要的方式工作(在您的 fiddle 中查看);

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");
}