我知道在javascript中,语法(1, 'a', 5, ... 'b')
将始终返回最后一个值,但这种语法实际上意味着什么?当我看到(1, 2)
- 其中几乎从来没有 - 我应该如何解析这种语法?
答案 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)
答案 2 :(得分:2)
答案 3 :(得分:1)
这只是comma operator,它评估两个表达式并返回第二个表达式。由于它从左到右计算参数,如果你有一个用逗号分隔的参数列表,那么将返回最后一个参数。来自The Elements of JavaScript Style:
逗号运算符与C语言中的大部分语法一样被借用。逗号运算符接受两个值并返回第二个值。它在语言定义中的存在倾向于掩盖某些编码错误,因此编译器往往对某些错误视而不见。最好避免使用逗号运算符,而是使用分号语句分隔符。
答案 4 :(得分:0)
圆括号 - 只是一个优先级更改的运算符。所以在这种情况下你可以省略它们。
你离开1, 2
,这只是用逗号分隔的两个表达式。