Почему javascript позволяет добавлять запятую в конце параметров функции? - PullRequest
0 голосов
/ 21 февраля 2019

Я обнаружил изменение в объявлении функции javascript, которое, кажется, отключено.Вы можете создать такую ​​функцию:

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

Я обнаружил, что запятая в параметрах функции допускается из-за различий в git:

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

и

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

- причина тому, что Git Diff действительно работает, я верю только в ECMAScript-2017.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Является ли git diffs действительно причиной этого, поскольку он работает, я верю только в ECMAScript-2017.

По сути, ответ - да.Цитирование оригинального предложения (жирный текст - мой)

В некоторых основах кода / руководствах по стилю существуют сценарии, в которых вызовы функций и определения разбиваются на несколько строк в стиле:

 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: );

В процессе внесения этого изменения в код, управляемый системой управления версиями (git, subversion, mercurial и т. Д.), Информация истории кода обвинения / аннотации для строк 3и 9 обновляются, чтобы указывать на человека, который добавил запятую (а не на человека, который первоначально добавил параметр).

Чтобы помочь смягчить эту проблему, некоторые другие языки (Python, D, Hack, ...вероятно, другие ...) добавили поддержку грамматики, чтобы разрешить запятую в этих списках параметров. Это позволяет авторам кода всегда заканчивать добавление параметра завершающей запятой в одном из этих списков параметров для каждой строки и больше не беспокоиться о проблеме атрибуции кода.

0 голосов
/ 21 февраля 2019

ECMAScript 2017 allows trailing commas in function parameter lists. из https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas.
Это разрешено спецификацией.
Я не думаю, что единственная причина для этой функции - помочь системам управления (таким как git) отслеживать, даже если этоэто хорошо ...
Другая причина в том, что перестановка элементов проще, потому что вам не нужно добавлять и удалять запятые, если последний элемент меняет свою позицию.По моему мнению, это главная причина ... До того, как это появилось, я всегда спрашивал себя, почему JS был так строг с нами, бедными разработчиками ...: -)

...