逗号风格
逗号风格规则强制执行逗号分隔列表的风格。JavaScript 中主要使用两种逗号风格
- 标准风格,逗号放在当前行的末尾
- 逗号优先风格,逗号放在下一行的开头
使用逗号优先风格的理由之一是它可以帮助追踪缺失和尾随逗号。这些问题很麻烦,因为变量声明中的缺失逗号会导致全局变量泄漏,而尾随逗号会导致旧版 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" 选项时,此规则的错误代码示例
js
/*eslint @stylistic/js/comma-style: ["error", "last"]*/
var foo = 1
,
bar = 2;
var foo = 1
, bar = 2;
var foo = ["apples"
, "oranges"];
function baz() {
return {
"a": 1
,"b:": 2
};
} incorrect
使用默认 "last" 选项时,此规则的正确代码示例
js
/*eslint @stylistic/js/comma-style: ["error", "last"]*/
var foo = 1, bar = 2;
var foo = 1,
bar = 2;
var foo = ["apples",
"oranges"];
function baz() {
return {
"a": 1,
"b:": 2
};
} correct
first
使用 "first" 选项时,此规则的错误代码示例
js
/*eslint @stylistic/js/comma-style: ["error", "first"]*/
var foo = 1,
bar = 2;
var foo = ["apples",
"oranges"];
function baz() {
return {
"a": 1,
"b:": 2
};
} incorrect
使用 "first" 选项时,此规则的正确代码示例
js
/*eslint @stylistic/js/comma-style: ["error", "first"]*/
var foo = 1, bar = 2;
var foo = 1
,bar = 2;
var foo = ["apples"
,"oranges"];
function baz() {
return {
"a": 1
,"b:": 2
};
} correct
exceptions
一个用例是仅在 var 语句中强制执行逗号样式。
使用示例 "first", { "exceptions": { … } } 选项时,此规则的错误代码示例
js
/*eslint @stylistic/js/comma-style: ["error", "first", { "exceptions": { "ArrayExpression": true, "ObjectExpression": true } }]*/
var o = {},
a = []; incorrect
使用示例 "first", { "exceptions": { … } } 选项时,此规则的正确代码示例
js
/*eslint @stylistic/js/comma-style: ["error", "first", { "exceptions": { "ArrayExpression": true, "ObjectExpression": true } }]*/
var o = {fst:1,
snd: [1,
2]}
, a = []; correct
何时不使用它
如果您的项目不关心强制执行一致的逗号样式,则可以安全地关闭此规则。