只是碰到了if
语句在javascript中可以包含多个参数的事实:
// Webkit
if (true, true, false) console.log("this won't get logged");
支持得有多好?
P.S。我知道这与使用&&
类似,但这很有趣,并且 google 无法提供答案。
答案 0 :(得分:14)
如果语句不能有“多个参数”。您观察到的是使用comma operator。
逗号运算符计算其两个操作数(从左到右) 并返回第二个操作数的值。
现在我们看到为什么(true, true, false)
不会记录任何内容而(true, false, true)
会记录。作为旁注,这种语法得到普遍支持(但几乎不应该使用)。
答案 1 :(得分:6)
这不是if
语句的功能,而是,
运算符。
您可以使用逗号分隔表达式,并且将评估每个表达式,但只将最后一个表达式用作整个表达式的值。
在你的例子中它很没用,但有时你想要一个表达式来评估它的副作用。例如:
var i = 1;
if (i += 2, i == 3) console.log("this will get logged");
答案 2 :(得分:3)
它与&&
不相似(尝试将false
移到第一个或第二个位置),它与if
无关,它与函数文字一样受支持,即绝对普遍。你遇到的是从C继承的逗号运算符,它从左到右计算表达式(实际上,它总是两个表达式,并且在概念上使用更多导致嵌套,如a + b + c
)并抛弃除最后一个结果之外的所有表达式。最后的结果成为整个表达的结果。
答案 3 :(得分:1)
在IE7中工作,所以我猜这得到了很好的支持。