{var}语句中的逗号是逗号运算符的示例吗?

时间:2019-05-01 21:44:26

标签: javascript syntax

或者为此,在constlet语句中。

例如,在此语句const a = 0, b = 1;中,等效代码(效果完全相同)为:

const a = 0;
const b = 1;

但是,我是否可以说该语句中的逗号不是comma operator?因为如果它是逗号运算符,那么const a = 0, b = 1应该等效于:

a = 0; // This already would throw a ReferenceError in strict mode
const b = 1;

类似地,如果该逗号确实是逗号运算符,则var a, b, c;应该是a; b; var c;,但是其效果是var a; var b; var c;

我的推理正确吗,还是我误解了逗号运算符?我之所以这样问,是因为我已经看到多篇文章提供了类似var i = 0, j = 9;这样的语句作为逗号运算符的示例(最后一个来自MDN页面),但是我认为这是一个不同的逗号,与逗号相同函数中的参数和数组不同于逗号运算符。

是不是逗号运算符的示例?

1 个答案:

答案 0 :(得分:1)

逗号在很多地方都使用过:

  • 表达式:(x, y) + 1
  • 声明:let x, y
  • 函数参数:foo(1,2,3)
  • 数组/对象初始化程序:[1,2,3]
  • 解构模式[x, y] = a

在这些变量中,只有第一个是逗号运算符,其他的则是...好吧,只是逗号(尽管有时它们的名字叫“ elision”)。

对于let/const语句,语法如下:http://www.ecma-international.org/ecma-262/8.0/#sec-let-and-const-declarations