跳至内容

@stylistic/

comma-style

逗号样式规则强制执行逗号分隔列表的样式。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/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/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/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/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/comma-style: ["error", "first", { "exceptions": { "ArrayExpression": true, "ObjectExpression": true } }]*/

var o = {}
,
a = [];
incorrect

此规则使用示例 "first", { "exceptions": { … } } 选项时,正确 代码示例

js
/*eslint @stylistic/comma-style: ["error", "first", { "exceptions": { "ArrayExpression": true, "ObjectExpression": true } }]*/

var o = {fst:1,
         snd: [1,
               2]}
  , a = [];
correct

何时不使用它

如果您的项目不关心强制执行一致的逗号样式,则可以安全地关闭此规则。