Javascript - (1,2)实际意味着什么?

时间:2012-08-23 21:51:28

标签: javascript syntax

我知道在javascript中,语法(1, 'a', 5, ... 'b')将始终返回最后一个值,但这种语法实际上意味着什么?当我看到(1, 2) - 其中几乎从来没有 - 我应该如何解析这种语法?

5 个答案:

答案 0 :(得分:5)

评估各个表达式 - 逗号之间的位 - 然后整个表达式采用最后一个的值。因此列出一系列数字和字符串文字就像你的例子一样毫无意义:

(1, 'a', 5, ... 'b')
// does the same thing as
('b')

...所以除了最后一点之外你还可以省略。但是,如果单个表达式具有其他效果,因为它们是函数调用或赋值,那么您就不能将它们排除在外。

关于我能想到使用此语法的唯一理由是for语句,因为for语法:

for([init]; [condition]; [final-expression])

...不允许您在[init]部分或[condition][final-expression]部分内使用分号。但是可以使用逗号包含多个表达式:

for(x = 0, y = 100, z = 1000; x < y; x++, y--, z-=100) { ... }

答案 1 :(得分:2)

,运算符计算它的两个参数并返回最后一个。

最常用于for循环:

for( i=0, j=0; ...)

MDN docs

答案 2 :(得分:2)

逗号运算符计算每个项目,然后返回最后一个项目:

var x = (1, 2, 3);
console.log(x == 3);  // true

这是Mozilla's documentation

答案 3 :(得分:1)

这只是comma operator,它评估两个表达式并返回第二个表达式。由于它从左到右计算参数,如果你有一个用逗号分隔的参数列表,那么将返回最后一个参数。来自The Elements of JavaScript Style

  

逗号运算符与C语言中的大部分语法一样被借用。逗号运算符接受两个值并返回第二个值。它在语言定义中的存在倾向于掩盖某些编码错误,因此编译器往往对某些错误视而不见。最好避免使用逗号运算符,而是使用分号语句分隔符。

答案 4 :(得分:0)

圆括号 - 只是一个优先级更改的运算符。所以在这种情况下你可以省略它们。

你离开1, 2,这只是用逗号分隔的两个表达式。