# comma-style
强制使用一致的逗号样式
一些该规则报告的问题可以通过 --fix 命令行选项 自动修复
逗号样式规则强制使用逗号分隔列表的样式。JavaScript 中主要使用两种逗号样式:
- 标准样式,其中逗号放在当前行的末尾
- 逗号优先样式,其中逗号放在下一行的开头
使用 Comma First 样式的理由之一是它可以帮助跟踪缺少和尾随的逗号。这些都是有问题的,因为变量声明中缺少逗号会导致全局变量泄漏,而尾随逗号会导致旧版本 IE 中的错误。
# 规则详情
此规则在数组字面、对象字面和变量声明中强制使用一致的逗号样式。
本规则不适用于下列任何一种情况:
- 逗号前后是换行符(单逗号)
- 单行数组字面量、对象字面量和变量声明
# 选项
此规则有一个字符串选项:
"last"
(默认)在数组元素、对象属性或变量声明的同一行之后和同一行上需要一个逗号"first"
要求在数组元素、对象属性或变量声明之前和同一行上使用逗号
此规则还接受一个额外的 exceptions
对象:
"exceptions" 的属性名称对应于 JavaScript 代码的抽象语法树 (AST) 中的节点类型:
"ArrayExpression": true 忽略数组字面中的逗号样式 "ArrayPattern": true 在解构的数组模式中忽略逗号样式 "ArrowFunctionExpression": true 忽略箭头函数表达式参数中的逗号样式 "CallExpression": true 忽略函数调用参数中的逗号样式 "FunctionDeclaration": true 忽略函数声明参数中的逗号样式 "FunctionExpression": true 忽略函数表达式参数中的逗号样式 "ImportDeclaration": true 在导入声明的说明符中忽略逗号样式 "ObjectExpression": true 忽略对象字面中的逗号样式 "ObjectPattern": true 忽略解构对象模式中的逗号样式 "VariableDeclaration": true 忽略变量声明中的逗号样式 "NewExpression": true 忽略构造函数表达式参数中的逗号样式
确定由 ESTree
定义的节点类型的一种方法是将 AST Explorer
与 espree 解析器一起使用。
# last
此规则使用默认 "last"
选项的错误代码示例:
/*eslint comma-style: ["error", "last"]*/
var foo = 1
,
bar = 2;
var foo = 1
, bar = 2;
var foo = ["apples"
, "oranges"];
function bar() {
return {
"a": 1
,"b:": 2
};
}
此规则使用默认 "last"
选项的正确代码示例:
/*eslint comma-style: ["error", "last"]*/
var foo = 1, bar = 2;
var foo = 1,
bar = 2;
var foo = ["apples",
"oranges"];
function bar() {
return {
"a": 1,
"b:": 2
};
}
# first
此规则使用 "first"
选项的错误代码示例:
/*eslint comma-style: ["error", "first"]*/
var foo = 1,
bar = 2;
var foo = ["apples",
"oranges"];
function bar() {
return {
"a": 1,
"b:": 2
};
}
此规则使用 "first"
选项的正确代码示例:
/*eslint comma-style: ["error", "first"]*/
var foo = 1, bar = 2;
var foo = 1
,bar = 2;
var foo = ["apples"
,"oranges"];
function bar() {
return {
"a": 1
,"b:": 2
};
}
# exceptions
一个示例用例是仅在 var 语句中强制使用逗号样式。
带有示例 "first", { "exceptions": { … } }
选项的此规则的错误代码示例:
/*eslint comma-style: ["error", "first", { "exceptions": { "ArrayExpression": true, "ObjectExpression": true } }]*/
var o = {},
a = [];
带有示例 "first", { "exceptions": { … } }
选项的此规则的正确代码示例:
/*eslint comma-style: ["error", "first", { "exceptions": { "ArrayExpression": true, "ObjectExpression": true } }]*/
var o = {fst:1,
snd: [1,
2]}
, a = [];
# 何时不使用
如果您的项目不关心强制使用一致的逗号样式,则可以安全地关闭此规则。