跳至内容

@stylistic/js/

no-confusing-arrow

箭头函数 (=>) 在语法上与一些比较运算符 (>, <, <=>=) 类似。此规则警告不要在可能与比较运算符混淆的地方使用箭头函数语法。

以下是一个使用 => 可能造成混淆的示例

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;

规则详情

此规则的错误代码示例

js
/*eslint @stylistic/js/no-confusing-arrow: "error"*/
/*eslint-env es6*/

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

此规则的正确代码示例

js
/*eslint @stylistic/js/no-confusing-arrow: "error"*/
/*eslint-env es6*/
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; };
correct

选项

此规则接受两个选项参数,默认值如下

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

allowParens 是一个布尔值设置,可以为 true(默认)或 false

  1. true 放宽规则,接受括号作为有效的“防止混淆”语法。
  2. false 即使表达式用括号包裹也会发出警告

此规则使用 {"allowParens": false} 选项的错误代码示例

js
/*eslint @stylistic/js/no-confusing-arrow: ["error", {"allowParens": false}]*/
/*eslint-env es6*/
var x = 
a => (1 ? 2 : 3)
;
var x =
(a) => (1 ? 2 : 3)
;
incorrect

onlyOneSimpleParam 是一个布尔值设置,可以为 truefalse(默认)

  1. true 放宽规则,如果箭头函数有 0 个或多个参数,或者参数不是标识符,则不会报告错误。
  2. false 无论参数如何都会发出警告。

此规则使用 {"onlyOneSimpleParam": true} 选项的正确代码示例

js
/*eslint @stylistic/js/no-confusing-arrow: ["error", {"onlyOneSimpleParam": true}]*/
/*eslint-env es6*/
() => 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;
correct