为什么我可以在map函数内部的下面的回调函数中在行尾使用逗号?

Why can I use comma at the end of the line in the following callback function inside the map function?

在 javascript 中,我认为如果我们在闭包中,则不允许以逗号结束行。为什么下面的代码片段是一个例外?

为什么我在 k.c = 'asd' 后面加一个逗号却不起作用?

let kk = [
{ a: 'asd', b: 'ddd' }, 
{ a: 'hhh', b: 'dsd' }
];

kk = kk.map(k => {
  k.a = 'new',
    k.b = 'new1',
    k.c = 'asd'
  return k
})

console.log(kk)

下面是一个表达式,有两个用法comma operator

k.a = 'new', k.b = 'new1', k.c = 'asd'

(JavaScript 中结尾的分号是可选的)。

然而,这是一个声明:

return k

不能使用逗号运算符组合表达式和语句。

注意:此代码应使用 .forEach 而不是 .map。你应该只在返回 new 对象时使用后者,而不是就地改变。

你的回调函数做了两件事: 给变量赋值,return一个值。

每一个赋值都是一个表达式,多个表达式可以用逗号分隔。你的多个表达作为一个整体构成了一个陈述。

回调最后的return也是一个语句

事情是这样的:不能用逗号分隔语句,只能用表达式!

传统上,您会以分号结束语句。在这种情况下,我认为这将帮助您直观地了解您的陈述之间的区别:

let kk = [{a: 'asd', b:'ddd'}, {a: 'hhh', b: 'dsd'}];

kk = kk.map(k => {
  k.a = 'new', k.b = 'new1', k.c = 'asd';
  return k;
})

console.log(kk);

我希望这能帮助您了解正在发生的事情!