跳至內容

eslint/no-caller 正確性

此規則預設為開啟。

此規則的作用

禁止使用 arguments.callerarguments.callee

為何這是不好的?

使用 arguments.callerarguments.callee 會使一些程式碼優化變得不可能。它們在未來版本的 JavaScript 中已被棄用,並且在 ECMAScript 5 的嚴格模式中禁止使用。

js
function foo() {
  var callee = arguments.callee;
}

此規則旨在通過禁止使用 arguments.callerarguments.callee 來阻止使用已棄用和次佳的程式碼。 因此,當使用 arguments.callerarguments.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;
});

參考資料

根據 MIT 許可證發布。