因此,我团队中的一名初级程序员今天编写了以下代码:
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。