因此,我团队中的一名初级程序员今天编写了以下代码:
if(status === ("incomplete" || "unknown"))
这显然不会按照他的意图去做,那就是:
if(status === "incomplete" || status === "unknown"))
但我无法解释的是为什么第一段代码不起作用!或者为什么如果“状态”设置为“不完整”则它评估为真,但当它设置为“未知”时它评估为假......
因此,我团队中的一名初级程序员今天编写了以下代码:
if(status === ("incomplete" || "unknown"))
这显然不会按照他的意图去做,那就是:
if(status === "incomplete" || status === "unknown"))
但我无法解释的是为什么第一段代码不起作用!或者为什么如果“状态”设置为“不完整”则它评估为真,但当它设置为“未知”时它评估为假......
在 JavaScript 中,如果||
运算结果为true
(即不是false
、null
、undefined
、""
或0
),则运算符返回其第一个操作数,否则返回其第二个操作数。
在第一种情况下,("incomplete" || "unknown")
总是评估为"incomplete"
,因为它评估为真。
整个条件就变成了:
if (status === "incomplete")
这解释了您正在观察的行为。
("incomplete" || "unknown")
将返回"incomplete"
比比较的status
。