我知道在 javascript 中,语法(1, 'a', 5, ... 'b')
总是会返回最后一个值,但这种语法实际上是什么意思?当我看到(1, 2)
- 诚然,这几乎从来没有 - 我应该如何解析该语法?
问问题
190 次
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
于 2012-08-23T21:57:04.447 回答
2
于 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 回答