7

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

4

5 回答 5

5

单个表达式(逗号之间的位)被求值,然后整个表达式取最后一个的值。因此,像您的示例一样列出一系列数字和字符串文字是毫无意义的:

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

...因此,您不妨忽略除最后一个之外的所有内容。但是,如果单个表达式因为它们是函数调用或赋值而具有其他效果,那么您不能将它们排除在外。

我能想到的使用这种语法的唯一好理由是在for语句中,因为for语法:

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

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

for(x = 0, y = 100, z = 1000; x < y; x++, y--, z-=100) { ... }
于 2012-08-23T21:58:51.083 回答
2

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

它最常用于for循环:

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

MDN 文档

于 2012-08-23T21:57:04.447 回答
2

逗号运算符评估每一项,然后返回最后一项:

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

这是Mozilla 的文档

于 2012-08-23T21:57:39.640 回答
1

这只是逗号运算符,它计算两个表达式并返回第二个。由于它从左到右评估参数,因此如果您有一个用逗号分隔的参数列表,则将返回最后一个参数。来自JavaScript 风格的元素

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

于 2012-08-23T21:57:19.027 回答
0

括号 - 只是一个改变优先级的运算符。因此,在这种情况下,您可以省略它们。

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

于 2012-08-23T21:54:21.443 回答