版本

no-confusing-arrow

不允許箭頭函式在可能與比較運算子混淆的地方使用

🔧 可修正

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

重要

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

瞭解更多

箭頭函式 (=>) 在語法上與一些比較運算子 (><<=>=) 相似。此規則警告不要在可能與比較運算子混淆的地方使用箭頭函式語法。

這是一個 => 的用法可能造成混淆的範例

// The intent is not clear
var x = a => 1 ? 2 : 3;
// Did the author mean this
var x = function (a) {
    return 1 ? 2 : 3;
};
// Or this
var x = a <= 1 ? 2 : 3;

規則詳情

此規則的 錯誤 程式碼範例

在遊樂場開啟
/*eslint no-confusing-arrow: "error"*/

var x = a => 1 ? 2 : 3;
var x = (a) => 1 ? 2 : 3;

此規則的 正確 程式碼範例

在遊樂場開啟
/*eslint no-confusing-arrow: "error"*/

var x = a => (1 ? 2 : 3);
var x = (a) => (1 ? 2 : 3);
var x = (a) => {
    return 1 ? 2 : 3;
};
var x = a => { return 1 ? 2 : 3; };

選項

此規則接受兩個選項參數,預設值如下

{
    "rules": {
        "no-confusing-arrow": [
            "error",
            { "allowParens": true, "onlyOneSimpleParam": false }
        ]
    }
}

allowParens 是一個布林值設定,可以是 true (預設) 或 false

  1. true 放寬規則,並接受括號作為有效的「防止混淆」語法。
  2. false 即使運算式包在括號中也會發出警告

使用 {\"allowParens\": false} 選項時,此規則的 錯誤 程式碼範例

在遊樂場開啟
/*eslint no-confusing-arrow: ["error", {"allowParens": false}]*/

var x = a => (1 ? 2 : 3);
var x = (a) => (1 ? 2 : 3);

onlyOneSimpleParam 是一個布林值設定,可以是 truefalse (預設)

  1. true 放寬規則,如果箭頭函式有 0 個或超過 1 個參數,或者參數不是識別符,則不會回報錯誤。
  2. false 無論參數如何都會發出警告。

使用 {\"onlyOneSimpleParam\": true} 選項時,此規則的 正確 程式碼範例

在遊樂場開啟
/*eslint no-confusing-arrow: ["error", {"onlyOneSimpleParam": true}]*/

() => 1 ? 2 : 3;
(a, b) => 1 ? 2 : 3;
(a = b) => 1 ? 2 : 3;
({ a }) => 1 ? 2 : 3;
([a]) => 1 ? 2 : 3;
(...a) => 1 ? 2 : 3;

版本

此規則在 ESLint v2.0.0-alpha-2 中引入。

資源

變更語言