You need to enable JavaScript to run this app. JavaScript中OR与三元运算符组合运行结果异常是什么原因?
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中OR与三元运算符组合运行结果异常是什么原因?

异常原因

问题的核心是JavaScript运算符优先级规则:

  • 逻辑或运算符 || 的优先级高于三元条件运算符 ?:
  • 你写的表达式 checked || record.AllowCheck === '0' ? '1' : '0' 不会按照你预期的逻辑执行,实际运行时会被解析为:
    (checked || record.AllowCheck === '0') ? '1' : '0'
    

你当前场景下checked取值为true,逻辑或运算只要左侧为真就会直接返回真,不会执行右侧判断,所以整个括号内的结果永远为true,三元运算符自然返回第一个分支的'1',和record.AllowCheck的取值完全无关,这就是输出不符合预期的原因。

修复方法

如果你的预期逻辑是「checked为真时返回'1',checked为假时再根据record.AllowCheck的值判断返回结果」,只需要给三元判断部分手动添加括号明确运算顺序即可:

const records = this.state.records.map((record) => {
    return {
        ...record,
        Checked: checked ? '1' : (record.AllowCheck === '0' ? '1' : '0'),
    }
});

如果你的预期逻辑和上述不同,只需要按照你想要的运算顺序,用括号明确分隔优先级即可避免同类问题。


内容的提问来源于stack exchange,提问作者Gabriel Lemon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 03:06:04