如果foo =" 4.3"为什么foo ==(" 4.3" ||" 4.4")等于true,但是foo ==(" 4.4" ||" 4.3")等于假?

时间:2015-04-17 19:58:21

标签: javascript if-statement

它们不应该是真的还是我错过了什么?

我正在尝试编写一个将变量与一组选项匹配的if语句。我总是这样做: if (variable == "4.3" || variable == "4.4")

但是其他方式不会更短并仍然有效吗?

4 个答案:

答案 0 :(得分:6)

您的代码实际执行的是

foo == "4.3"

,第二个是

foo == "4.4"

它不是以任何值运行或与之相比。它正在评估" 4.3" || " 4.4"并使用第一个truthy值。在第一种情况下," 4.3"在第二种情况下" 4.4"因为价值观的顺序。

您可以使用以下内容作为in:

(["4.3","4.4"]).indexOf(foo) > -1

您可以向数组中添加更多值,以便稍后进行匹配。

答案 1 :(得分:2)

首先评估括号,||运算符返回第一个" truthy"值。

foo == (“4.3” || “4.4”)是正确的,因为==的右侧评估为"4.3"

foo == (“4.4” || “4.3”)为false,因为右侧评估为"4.4"

答案 2 :(得分:2)

|| section首先计算,然后返回以下内容

"4.3" || "4.4"

返回" 4.3"

"4.4" || "4.3"

返回" 4.4"

所以你要检查

variable == "4.3"

variable == "4.4"

答案 3 :(得分:0)

||是" OR" javascript中的运算符,但在你的陈述的上下文中,你说"返回哪个是真的":

var foo;
foo = (0 || 1); //1
foo = (13 || 14); //13
foo = (null || undefined); // undefined;
foo = ("4.4" || "4.3"); //"4.4"