eslint/no-caller 正確性
此規則的作用
禁止使用 arguments.caller
或 arguments.callee
。
為何這是不好的?
使用 arguments.caller
和 arguments.callee
會使一些程式碼優化變得不可能。它們在未來版本的 JavaScript 中已被棄用,並且在 ECMAScript 5 的嚴格模式中禁止使用。
js
function foo() {
var callee = arguments.callee;
}
此規則旨在通過禁止使用 arguments.caller
和 arguments.callee
來阻止使用已棄用和次佳的程式碼。 因此,當使用 arguments.caller
和 arguments.callee
時,它會發出警告。
範例
此規則的不正確程式碼範例
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;
});