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

Geo*_*uer 7 javascript syntax

我知道在javascript中语法(1, 'a', 5, ... 'b')将始终返回最后一个值,但这种语法实际上意味着什么?当我看到(1, 2)- 不可否认,这绝不是 - 我应该如何解析这种语法?

nnn*_*nnn 5

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

(1, 'a', 5, ... 'b')
// does the same thing as
('b')
Run Code Online (Sandbox Code Playgroud)

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

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

for([init]; [condition]; [final-expression])
Run Code Online (Sandbox Code Playgroud)

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

for(x = 0, y = 100, z = 1000; x < y; x++, y--, z-=100) { ... }
Run Code Online (Sandbox Code Playgroud)


Bil*_*ard 1

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

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