Javascript:if(arg1,arg2,arg3 ...)语句

时间:2011-08-25 20:37:33

标签: javascript

只是碰到了if语句在javascript中可以包含多个参数的事实:

// Webkit
if (true, true, false) console.log("this won't get logged");

支持得有多好?

P.S。我知道这与使用&&类似,但这很有趣,并且 google 无法提供答案。

4 个答案:

答案 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中工作,所以我猜这得到了很好的支持。