Запятая-висящая
Требовать или запрещать запятые в конце
Некоторые проблемы, выявленные этим правилом, автоматически исправляются с помощью параметра командной строки --fix командной строки
Это правило было устаревшим в ESLint v8.53.0. Используйте соответствующее правило соответствующее правило в @stylistic/eslint-plugin-js.
Запятые в конце объектов допустимы в соответствии со спецификацией ECMAScript 5 (и ECMAScript 3!). Однако IE8 (когда не в режиме документа IE8) и ниже выдаст ошибку, когда встретит запятые в конце в JavaScript.
var foo = {
bar: "baz",
qux: "quux",
};
Запятые в конце упрощают добавление и удаление элементов в объекты и массивы, так как нужно изменить только те строки, которые вы изменяете. Другой аргумент в пользу запятых в конце заключается в том, что это улучшает ясность изменений, когда элемент добавляется или удаляется из объекта или массива:
Менее понятно:
var foo = {
- bar: "baz",
- qux: "quux"
+ bar: "baz"
};
Более понятно:
var foo = {
bar: "baz",
- qux: "quux",
};
Подробное описание правила
Это правило навязывает согласованное использование запятых в конце объектов и массивов.
Параметры
Это правило имеет строковый параметр или параметр объекта:
{
"comma-dangle": ["error", "never"],
// or
"comma-dangle": ["error", {
"arrays": "never",
"objects": "never",
"imports": "never",
"exports": "never",
"functions": "never"
}]
}
-
"never"(по умолчанию) запрещает запятые в конце -
"always"требует запятых в конце -
"always-multiline"требует запятых в конце, когда последний элемент или свойство находится в различной строке, чем закрывающая]или}, и запрещает запятые в конце, когда последний элемент или свойство находится в той же строке, что и закрывающая]или} -
"only-multiline"разрешает (но не требует) запятых в конце, когда последний элемент или свойство находится в различной строке, чем закрывающая]или}, и запрещает запятые в конце, когда последний элемент или свойство находится в той же строке, что и закрывающая]или}
Вы также можете использовать параметр объекта для настройки этого правила для каждого типа синтаксиса. Каждый из следующих параметров может быть настроен на "never", "always", "always-multiline", "only-multiline", или "ignore". По умолчанию для каждого параметра значение "never" , если не указано иное.
-
arraysотносится к массивам литералов и массивам шаблонов разбора. (например,let [a,] = [1,];) -
objectsотносится к объектам литералов и объектам шаблонов разбора. (например,let {a,} = {a: 1};) -
importsотносится к декларациям импорта ES Modules. (например,import {a,} from "foo";) -
exportsотносится к декларациям экспорта ES Modules. (например,export {a,};) -
functionsотносится к декларациям и вызовам функций. (например,(function(a,){ })(b,);)-
functionsследует включать только при проверке ECMAScript 2017 или более поздней версии.
-
never
Примеры неправильного кода для этого правила с параметром "never" по умолчанию:
/*eslint comma-dangle: ["error", "never"]*/
var foo = {
bar: "baz",
qux: "quux"
};
var arr = [1,2];
foo({
bar: "baz",
qux: "quux"
});
Примеры правильного кода для этого правила с параметром "never" по умолчанию:
/*eslint comma-dangle: ["error", "never"]*/
var foo = {
bar: "baz",
qux: "quux"
};
var arr = [1,2];
foo({
bar: "baz",
qux: "quux"
});
always
Примеры неправильного кода для этого правила с параметром "always":
/*eslint comma-dangle: ["error", "always"]*/
var foo = {
bar: "baz",
qux: "quux"};
var arr = [1,2;
foo({
bar: "baz",
qux: "quux"};
Примеры правильного кода для этого правила с параметром "always":
/*eslint comma-dangle: ["error", "always"]*/
var foo = {
bar: "baz",
qux: "quux",
};
var arr = [1,2,];
foo({
bar: "baz",
qux: "quux",
};
always-multiline
Примеры неправильного кода для этого правила с параметром "always-multiline":
/*eslint comma-dangle: ["error", "always-multiline"]*/
var foo = {
bar: "baz",
qux: "quux"};
var foo = { bar: "baz", qux: "quux" };
var arr = [1,2];
var arr = [1,
2];
var arr = [
1,
2];
foo({
bar: "baz",
qux: "quux"});
Примеры правильного кода для этого правила с параметром "always-multiline":
/*eslint comma-dangle: ["error", "always-multiline"]*/
var foo = {
bar: "baz",
qux: "quux",
};
var foo = {bar: "baz", qux: "quux"};
var arr = [1,2];
var arr = [1,
2];
var arr = [
1,
2,
];
foo({
bar: "baz",
qux: "quux",
});
только-многострочный
Примеры неправильного кода для этого правила с параметром "only-multiline":
/*eslint comma-dangle: ["error", "only-multiline"]*/
var foo = { bar: "baz", qux: "quux" };
var arr = [1,2];
var arr = [1,
2];
Примеры правильного кода для этого правила с параметром "only-multiline":
/*eslint comma-dangle: ["error", "only-multiline"]*/
var foo = {
bar: "baz",
qux: "quux",
};
var foo = {
bar: "baz",
qux: "quux"
};
var foo = {bar: "baz", qux: "quux"};
var arr = [1,2];
var arr = [1,
2];
var arr = [
1,
2,
];
var arr = [
1,
2
];
foo({
bar: "baz",
qux: "quux",
});
foo({
bar: "baz",
qux: "quux"
});
функции
Примеры неправильного кода для этого правила с параметром {"functions": "never"}:
/*eslint comma-dangle: ["error", {"functions": "never"}]*/
function foo(a, b) {
}
foo(a, b);
new foo(a, b);
Примеры правильного кода для этого правила с параметром {"functions": "never"}:
/*eslint comma-dangle: ["error", {"functions": "never"}]*/
function foo(a, b) {
}
foo(a, b);
new foo(a, b);
Примеры неправильного кода для этого правила с параметром {"functions": "always"}:
/*eslint comma-dangle: ["error", {"functions": "always"}]*/
function foo(a, b {
}
foo(a, b;
new foo(a, b;
Примеры правильного кода для этого правила с параметром {"functions": "always"}:
/*eslint comma-dangle: ["error", {"functions": "always"}]*/
function foo(a, b,) {
}
foo(a, b,);
new foo(a, b,);
Когда не стоит его использовать
Вы можете отключить это правило, если вас не волнуют висящие запятые.
Версия
Это правило было добавлено в ESLint v0.16.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/comma-dangle