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

JS左侧用或运算符的比较问题:为何简写写法失效?

为什么(this.filterControl.value === ("YES" || "NO"))这种条件判断写法无效?

问题里的第一种写法不生效,核心原因是逻辑或运算符||的执行逻辑和你预期的不一样:

  • ||的规则是:依次计算左右两侧表达式,只要遇到第一个「真值」就直接返回它,不再处理后续内容。
  • 非空字符串属于「真值」,所以"YES" || "NO"会直接返回"YES",完全不会理会后面的"NO"。

这就导致你的条件判断实际上等价于:

if (this.filterControl.value === "YES")

自然无法匹配value为"NO"的情况。

而正确写法this.filterControl.value === "YES" || this.filterControl.value === "NO"里,||连接的是两个完整的比较表达式:先判断值是否等于"YES",如果不成立,再判断是否等于"NO",这样两种情况都能被正确检测到。

如果想写得更简洁,也可以用数组包含的方式:

if (["YES", "NO"].includes(this.filterControl.value))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:32:21