使用OR运算符检查变量值

时间:2013-03-11 16:20:06

标签: javascript

所以,我团队的一名初级程序员今天编写了以下代码:

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

这显然不会按照他的意图行事,这就是:

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

但我无法解释的是为什么第一段代码无法正常工作!或者,如果'status'设置为'incomplete',则为什么评估为true;如果将'status'设置为'unknown',则评估为false ...

3 个答案:

答案 0 :(得分:20)

在JavaScript中,||运算符返回其第一个操作数(如果它的计算结果为true(即它不是falsenullundefined,{ {1}}或""),否则为第二个操作数。

在第一种情况下,0始终评估为("incomplete" || "unknown"),因为它的计算结果为真。

然后整个条件变为:

"incomplete"

这解释了您正在观察的行为。

答案 1 :(得分:6)

("incomplete" || "unknown")将返回"incomplete",与status进行比较。

答案 2 :(得分:3)

  

但我无法解释的是为什么status === ("incomplete" || "unknown")无法正常工作

那是因为首先评估括号中的表达式。非空字符串incomplete是真实的,因此OR-expression ("incomplete" || "unknown")会产生"incomplete",然后只会将其与您的status变量进行比较。

要缩短条件,there are many ways包括值数组,正则表达式测试等。