它们不应该是真的还是我错过了什么?
我正在尝试编写一个将变量与一组选项匹配的if语句。我总是这样做:
if (variable == "4.3" || variable == "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"