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 = ;
var x = ;
此规则的正确代码示例
在游乐场中打开
/*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
true
放宽了规则并接受括号作为有效的“防止混淆”语法。false
即使表达式用括号包裹也会发出警告。
此规则的错误代码示例,使用 {"allowParens": false}
选项
在游乐场中打开
/*eslint no-confusing-arrow: ["error", {"allowParens": false}]*/
var x = ;
var x = ;
onlyOneSimpleParam
是一个布尔值设置,可以为 true
或 false
(默认)。
true
放宽了规则,如果箭头函数有 0 个或多个参数,或者参数不是标识符,则不会报告错误。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 中引入的。