使用OR操作符检查变量值

checking a variable value using an OR operator

本文关键字:变量值 检查 操作符 OR 使用      更新时间:2023-09-26

所以,今天我团队中的一个初级程序员写了下面一段代码:

if(status === ("incomplete" || "unknown"))

这显然不会达到他的目的,也就是:

if(status === "incomplete" || status === "unknown"))

但是我不能解释的是为什么第一段代码不能工作!或者为什么当'status'被设置为'incomplete'时,它的值为true,而当它被设置为'unknown'时,它的值为false…

在JavaScript中,如果||运算符的计算结果为true(即它不是false, null, undefined, ""0),则返回其第一个操作数,否则返回其第二个操作数。

在第一种情况下,("incomplete" || "unknown")总是求值为"incomplete",因为它的求值为true。

整个条件变成:

if (status === "incomplete")

这解释了你正在观察的行为

("incomplete" || "unknown")将返回"incomplete",与status相比

但我无法解释的是为什么status === ("incomplete" || "unknown")不起作用

这是因为括号中的表达式首先求值。非空字符串incomplete为真值,因此or表达式("incomplete" || "unknown")产生"incomplete",然后仅将其与status变量进行比较。

要缩短条件,有许多方法,包括值数组,正则表达式测试等