版本

comma-style

強制執行一致的逗號風格

🔧 可修正

此規則回報的某些問題可以透過 --fix 命令列 選項自動修正

重要事項

此規則在 ESLint v8.53.0 中已棄用。請使用 對應的規則,位於 @stylistic/eslint-plugin-js 中。

了解更多

Comma Style 規則強制執行逗號分隔列表的風格。JavaScript 中主要使用兩種逗號風格

  • 標準風格,逗號放在目前行的末尾
  • Comma First 風格,逗號放在下一行的開頭

使用 Comma First 風格的理由之一是它可以幫助追蹤遺失和尾隨逗號。這些是有問題的,因為變數宣告中遺失逗號可能導致全域變數洩漏,而尾隨逗號可能導致舊版 IE 中發生錯誤。

規則詳情

此規則強制陣列字面值、物件字面值和變數宣告中逗號風格的一致性。

此規則在以下任一情況下皆不適用

  • 逗號前面和後面都有換行符號(單獨逗號)
  • 單行陣列字面值、物件字面值和變數宣告

選項

此規則有一個字串選項

  • "last"(預設)要求逗號位於陣列元素、物件屬性或變數宣告之後,且在同一行
  • "first" 要求逗號位於陣列元素、物件屬性或變數宣告之前,且在同一行

此規則也接受額外的 exceptions 物件

  • "exceptions" 具有屬性,其名稱對應於 JavaScript 程式碼抽象語法樹 (AST) 中的節點類型

    • "ArrayExpression": true 忽略陣列字面值中的逗號風格
    • "ArrayPattern": true 忽略解構的陣列模式中的逗號風格
    • "ArrowFunctionExpression": true 忽略箭頭函數表達式的參數中的逗號風格
    • "CallExpression": true 忽略函數呼叫的引數中的逗號風格
    • "FunctionDeclaration": true 忽略函數宣告的參數中的逗號風格
    • "FunctionExpression": true 忽略函數表達式的參數中的逗號風格
    • "ImportDeclaration": true 忽略 import 宣告的 specifier 中的逗號風格
    • "ObjectExpression": true 忽略物件字面值中的逗號風格
    • "ObjectPattern": true 忽略解構的物件模式中的逗號風格
    • "VariableDeclaration": true 忽略變數宣告中的逗號風格
    • "NewExpression": true 忽略建構子表達式的參數中的逗號風格

判斷由 ESTree 定義的節點類型的方法是使用 AST Explorer 和 espree 解析器。

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 中引入。

延伸閱讀

資源

變更語言