为什么javascript允许您在函数参数的末尾添加逗号?

为什么javascript允许您在函数参数的末尾添加逗号?,javascript,ecmascript-6,ecmascript-2017,ecmascript-2016,Javascript,Ecmascript 6,Ecmascript 2017,Ecmascript 2016,我在javascript函数声明中遇到了一个似乎已关闭的更改。您可以创建如下函数: let a = function (b,) { console.log(b); } 我发现函数参数中的尾随逗号是允许的,因为以下参数之间存在git差异: let a = function ( b, ) { console.log(b); } 及 git Diff真的是原因吗?因为它有效,我只相信ECMAScript-2017。ECMAScript 2017允许在函数参数列表中使用尾随逗

我在javascript函数声明中遇到了一个似乎已关闭的更改。您可以创建如下函数:

let a = function (b,) {
    console.log(b);
}
我发现函数参数中的尾随逗号是允许的,因为以下参数之间存在git差异:

let a = function (
    b,
) {
    console.log(b);
}


git Diff真的是原因吗?因为它有效,我只相信ECMAScript-2017。

ECMAScript 2017允许在函数参数列表中使用尾随逗号。
from.
这是规范允许的。
我不认为这个功能的唯一原因是帮助控制系统(如git)进行跟踪,即使这是一个很好的…
另一个原因是,重新排列项目更简单,因为如果最后一个项目更改了位置,则不必添加或删除逗号。据我所说,这是主要原因。。。在它被引入之前,我总是问自己为什么JS对我们这些可怜的开发人员如此严格…:-)

git差异真的是原因吗?因为它有效,我只相信ECMAScript-2017

基本上,答案是肯定的。引用原文(粗体文本是我的)

在一些代码库/样式指南中,会出现以下情况: 函数调用和定义在 风格:

在这些情况下,当一些其他代码贡献者出现并添加 对于这些参数列表之一的另一个参数,它们必须有两个 行更新:

在对由版本管理的代码执行此更改的过程中 控制系统(git、subversion、mercurial等),责任/注释 第3行和第9行的代码历史记录信息更新到 添加逗号的人(而不是最初添加逗号的人) 添加了参数)

为了帮助缓解这个问题,其他一些语言(Python、D、Hack、, …可能其他人…)添加了语法支持以允许尾随 在这些参数列表中使用逗号这允许代码贡献者 始终在其中一个参数中使用尾随逗号结束参数添加 每行参数列表,无需担心代码 再次出现归因问题


我认为OP中关于git Diff的部分暗示/意味着,通过添加一个尾随逗号,它可以帮助版本控制系统(即git)跟踪实际更改的内容。请参阅从“第二,它有助于版本控制系统…”一段开始给出的示例。您不应该说它在Python中也可用,现在我恨自己知道…@D.Mydło这是为什么?
let a = function (
    b,
    c,
) {
    console.log(b);
}
 1: function clownPuppiesEverywhere(
 2:   param1,
 3:   param2
 4: ) { /* ... */ }
 5: 
 6: clownPuppiesEverywhere(
 7:   'foo',
 8:   'bar'
 9: );
 1: function clownPuppiesEverywhere(
 2:   param1,
 3:   param2, // updated to add a comma
 4:   param3  // updated to add new parameter
 5: ) { /* ... */ }
 6: 
 7: clownPuppiesEverywhere(
 8:   'foo',
 9:   'bar', // updated to add a comma
10:   'baz'  // updated to add new parameter
11: );