eslint/no-caller 正しさ
何をするか
arguments.caller や arguments.callee の使用を禁止します。
なぜ問題なのか
arguments.caller および arguments.callee の使用は、いくつかのコード最適化を不可能にします。これらは JavaScript で非推奨されており、厳格モードでは使用が禁止されています。
js
function foo() {
var callee = arguments.callee;
}このルールは、非推奨かつ効率が悪いコードの使用を妨げるために設計されており、arguments.caller および arguments.callee の使用を禁止しています。そのため、これらのプロパティが使用された場合、警告が発生します。
詳しくは MDN のドキュメント を参照してください。
例
このルールに対して誤りなコードの例:
js
function foo(n) {
if (n <= 0) {
return;
}
arguments.callee(n - 1);
}
[1, 2, 3, 4, 5].map(function (n) {
return !(n > 1) ? 1 : arguments.callee(n - 1) * n;
});このルールに対して正しいコードの例:
js
function foo(n) {
if (n <= 0) {
return;
}
foo(n - 1);
}
[1, 2, 3, 4, 5].map(function factorial(n) {
return !(n > 1) ? 1 : factorial(n - 1) * n;
});使い方
設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:
json
{
"rules": {
"no-caller": "error"
}
}bash
oxlint --deny no-caller