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
相关产品推荐
相关产品推荐

