JavaScript中的逗号何时被视为逗号运算符,何时不是?

JavaScript中的逗号何时被视为逗号运算符,何时不是?,javascript,Javascript,我已经阅读了有关的内容,但我不确定此运算符是否用于以下表达式: var a, b, c; 这是逗号运算符在起作用还是这里使用的逗号只是声明多个变量的语法的一部分,因此与逗号运算符无关 类似地,声明数组文字的代码如何: var x = [ 1, 2, 3 ]; 在我看来,逗号运算符语法需要在表达式周围加括号,例如: x = (2, 3); 但这并没有在报告中明确指出。如果是这种情况,那么这里的前两个代码段是否确实没有使用逗号运算符,因为它周围没有括号 这个逗号运算符是否起作用,或者这里使用的

我已经阅读了有关的内容,但我不确定此运算符是否用于以下表达式:

var a, b, c;
这是逗号运算符在起作用还是这里使用的逗号只是声明多个变量的语法的一部分,因此与逗号运算符无关

类似地,声明数组文字的代码如何:

var x = [ 1, 2, 3 ];
在我看来,逗号运算符语法需要在表达式周围加括号,例如:

x = (2, 3);
但这并没有在报告中明确指出。如果是这种情况,那么这里的前两个代码段是否确实没有使用逗号运算符,因为它周围没有括号

这个逗号运算符是否起作用,或者这里使用的逗号只是声明多个变量的语法的一部分,因此与逗号运算符无关

后者只是
var
(和
let
const
)语法的一部分

在我看来,逗号运算符语法需要在表达式周围加括号

您经常会发现您需要它们,因为否则表达式会以另一种方式分组;逗号运算符有,所以几乎所有的东西都会战胜它。但你并不总是需要它们,只是几乎总是需要。例如,这个人为的例子没有它们也能成功:


console.log(1),console.log(2)逗号运算符确实很奇怪,需要一些时间来适应细微差别

var
const
let
声明中,逗号分隔变量(及其初始化表达式,如果有的话)。在这种情况下,如果没有(正如您所注意到的)括号中的逗号,则逗号仅是一个语法分隔符标记。但是,在具有逗号的初始化器表达式中,则是逗号运算符

类似地,在数组初始值设定项中,逗号是数组值的分隔符,但括号再次引入了新的表达式上下文

对象初始值设定项、函数调用和函数声明中的逗号也是如此

逗号运算符表达式并不总是必须用括号括起来。事实上,一些代码最小化者试图用逗号替换分号(出于神秘的原因)

实际上,逗号运算符最有用的用途是能够将多个表达式(通常是有副作用的表达式)压缩到允许一个表达式的更大语法中的一个插槽中。
for
循环就是一个很好的例子:

for (*expression*; *expression*; *expression*) { ... }
逗号运算符允许您在其中一个表达式中执行两项操作:

for(设i=0;i<10;someFunction(i),i++){…}

在前面的两个示例中,它根本不是一个运算符,它只是一个逗号字符……实际上它被明确指出:“逗号运算符与数组、对象、函数参数和参数中的逗号完全不同。”
var x=[1,2,3]
不是逗号运算符。但是,类似于:
x[1,2,3]=“value”
使用逗号运算符。所以,它并不总是需要括号。它与
x[3]=“value”
相同。
for (let i = 0; i < 10; someFunction(i), i++) { ... }