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/no-confusing-arrow: "error"*/
/*eslint-env es6*/
var x = a => 1 ? 2 : 3;
var x = (a) => 1 ? 2 : 3;
不正
このルールに準拠する正しいコードの例
js
/*eslint @stylistic/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; };
正しい
オプション
このルールは、以下のデフォルト値を持つ2つのオプション引数を受け入れます。
json
{
"rules": {
"no-confusing-arrow": [
"error",
{ "allowParens": true, "onlyOneSimpleParam": false }
]
}
}
allowParens
は、true
(デフォルト) または false
のいずれかのブール値設定です。
true
はルールを緩和し、括弧を有効な「混乱を防ぐ」構文として受け入れます。false
は、式が括弧で囲まれている場合でも警告します。
{"allowParens": false}
オプションを指定した場合の、このルールに違反する不正なコードの例
js
/*eslint @stylistic/no-confusing-arrow: ["error", {"allowParens": false}]*/
/*eslint-env es6*/
var x = a => (1 ? 2 : 3);
var x = (a) => (1 ? 2 : 3);
不正
onlyOneSimpleParam
は、true
または false
(デフォルト) のいずれかのブール値設定です。
true
はルールを緩和し、アロー関数に 0 個以上のパラメータがある場合、またはパラメータが識別子でない場合はエラーを報告しません。false
は、パラメータに関係なく警告します。
{"onlyOneSimpleParam": true}
オプションを指定した場合の、このルールに準拠する正しいコードの例
js
/*eslint @stylistic/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;
正しい