You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:36:07