JavaScript if-else语句中逻辑运算符使用错误修复咨询
问题根因
你代码的核心错误出现在第二个if分支的判断条件上:(receivedState == 3 || 4 || 5) 这种写法不符合JS语法逻辑,逻辑或运算符||两侧的表达式会独立判断布尔值,上述代码实际等价于 (receivedState == 3) || Boolean(4) || Boolean(5),而正数4/5的布尔值恒为true,所以这部分判断永远返回真,只要第一个if分支不命中,第二个分支的前半部分判断永远成立,自然就会错误触发allowedState = 2的赋值逻辑。
修复方案
写法1:修正逻辑或判断
把第二个分支的数值判断补全全等校验即可,若需要严格匹配类型可以把==替换为===:
var receivedState = 2; var currentState = 1; var allowedState = true; if(receivedState == 2 && currentState !== 1) { allowedState = 1; // 修正后的判断条件 } else if ((receivedState == 3 || receivedState == 4 || receivedState == 5) && (currentState !== 2)) { allowedState = 2; } console.log(allowedState);
写法2:用数组includes简化多值判断
如果匹配的数值较多,可以用数组的includes方法简化代码,可读性更高:
var receivedState = 2; var currentState = 1; var allowedState = true; if(receivedState === 2 && currentState !== 1) { allowedState = 1; } else if ([3,4,5].includes(receivedState) && currentState !== 2) { allowedState = 2; } console.log(allowedState);
内容的提问来源于stack exchange,提问作者Tolga
相关产品推荐
相关产品推荐

