版本

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 忽略 import 宣告指定符中的逗號風格
    • "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 baz() {
    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 baz() {
    return {
        "a": 1,
        "b:": 2
    };
}

first

以下為此規則使用 "first" 選項的錯誤程式碼範例

在遊樂場中開啟
/*eslint comma-style: ["error", "first"]*/

var foo = 1,
    bar = 2;

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

function baz() {
    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 baz() {
    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 = [];

何時不應使用

如果您的專案不關心強制執行一致的逗號風格,則可以安全地關閉此規則。

版本

此規則在 ESLint v0.9.0 中引入。

延伸閱讀

資源

變更語言