no-confusing-arrow

禁止可能与比较混淆的箭头函数

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

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

这是一个示例,其中 => 的用法可能会令人困惑:

// 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"*/
/*eslint-env es6*/

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

6RXgRVcYea97/4k5PNW/nItJttC+MHc4vVjxm8VW+ghbeqd3KsyvO/XAfiqXOEJI

/*eslint 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; };

选项

vIoSJrYSjSygVxVYKl5vjnZTTf3eRCEjTiIT1z9y6fOHd0LgB9M6bKDTrpPjiZv23JGSC/6J7T4H/5Ozrh6BFA==

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

WhCcNNQmqNZ0736ZM1NkEMsw9kYcLJqHkcKKvLH5TBtTCp4NmtznCXsgCB2v+FuIs8rNqlzZinwZTnYv33eSwC+VJH4jpyl+DwSdPMia9nH7onFZ3dci78FNZ8mvTw/IYe4IfP8e0yMVma7SMjIh1cYRCyPpibxdAfsggLX3x5Q=

  1. true 放宽了规则并接受括号作为有效的 "confusion-preventing" 语法。
  2. 即使表达式用括号括起来,false 也会发出警告

1tb+eDg9lr3kv3DONP/OOYSxqkutTppcqcEg2C/Y0mXUOYepvEXXWJikIHeJ8VpStlsBJSlfAnMNtQFPGywAjteTiqyYlqSYNHX3ksqtxYUwiToVUJnRInW8cSSyZQ8J

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

nQeUF4IufUWzw4blMjJ1r1J4/ZFIsbmWft31xKfIhmDbbCQX+Z/yp5oT75GQOqSRlZnCKxOMS94k0J7WNc2QRfvzBdaW5zYUmGg7ueuvdmfygyBWPj8I+BVbWSu6seFmL+EAbvO6BuEVkkEKwaD4MXB8nWmqebQk4lz9fP8TjnA=

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

1tb+eDg9lr3kv3DONP/OOaDMyZicxt+/3JMVp506l/koYo21STeHykpkvmrrKfUMQyMi+6DEEBDolNWKZuw3cp8NmR4v6TPZiJTRJuCd9yd6uLA7ISqIp/0+Gl3CJ7fH

/*eslint 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;