版本

comma-style

强制执行一致的逗号风格

🔧 可修复

此规则报告的一些问题可以通过 --fix 命令行 选项自动修复

重要提示

此规则在 ESLint v8.53.0 中已弃用。请使用 @stylistic/eslint-plugin-js 中的相应规则

了解更多

逗号风格规则强制执行逗号分隔列表的风格。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 定义的节点类型的一种方法是使用带有 espree 解析器的 AST Explorer

last

使用默认 "last" 选项的此规则的错误代码示例

在 Playground 中打开
/*eslint 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
    };
}

使用默认 "last" 选项的此规则的正确代码示例

在 Playground 中打开
/*eslint 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
    };
}

first

使用 "first" 选项的此规则的错误代码示例

在 Playground 中打开
/*eslint comma-style: ["error", "first"]*/

var foo = 1,
    bar = 2;

var foo = ["apples",
           "oranges"];

function baz() {
    return {
        "a": 1,
        "b:": 2
    };
}

使用 "first" 选项的此规则的正确代码示例

在 Playground 中打开
/*eslint 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
    };
}

exceptions

一个示例用例是在 var 语句中强制执行逗号风格。

使用示例 "first", { "exceptions": { … } } 选项的此规则的错误代码示例

在 Playground 中打开
/*eslint comma-style: ["error", "first", { "exceptions": { "ArrayExpression": true, "ObjectExpression": true } }]*/

var o = {},
    a = [];

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

在 Playground 中打开
/*eslint comma-style: ["error", "first", { "exceptions": { "ArrayExpression": true, "ObjectExpression": true } }]*/

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

何时不使用

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

版本

此规则在 ESLint v0.9.0 中引入。

进一步阅读

资源

更改语言