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

标签 javascript

我读过 comma operator in JS但我不确定这个运算符是否用在这样的表达式中:

var a, b, c;

这是工作中的逗号运算符还是此处使用的逗号只是声明多个变量的语法的一部分,因此与逗号运算符无关?

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

var x = [ 1, 2, 3 ];

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

x = (2, 3);

但这在 MDN article 中没有明确指出.如果是这种情况,那么这里的前两个片段是否真的没有使用逗号运算符,因为它周围没有括号?

最佳答案

逗号运算符确实很奇怪,需要一些时间来适应其中的细微差别。

varconstlet 声明中,逗号分隔变量(以及它们的初始化表达式,如果有的话)。在那种情况下,如果没有(正如您所注意到的)带括号的逗号,逗号只是一个句法分隔符。但是,在 确实 有逗号的初始化器表达式中,那就是逗号运算符。

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

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

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

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

for (*expression*; *expression*; *expression*) { ... }

逗号运算符可以让您在其中一个表达式中做两件事:

for (let i = 0; i < 10; someFunction(i), i++) { ... }

关于javascript - JavaScript 中的逗号何时被视为逗号运算符,何时不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64012338/

相关文章:

javascript - 在 angularjs 中使用分页号码进行过滤/排序时出现问题

javascript - 当 url 包含特定参数时隐藏页眉/页脚

javascript - 如何在存储在字符串中的 Html 代码上执行存储在字符串中的 JS 脚本

javascript - React 将 props 传递给 onChange

javascript - 当对象跟随鼠标时,为什么 JavaScript 中存在滞后?

javascript - 将 json 对象属性提取到数组中的简单方法?

javascript - 如何根据我的 JSON 数据动态创建 HTML DOM?

javascript - 如何为ckeditor定义自己的列表样式?

javascript - 如何在刷新时清除 props.location.state?

javascript - 如何设置和跟踪用户的在线状态