TypeError: 'caller', 'callee' und 'arguments' Eigenschaften dürfen nicht zugegriffen werden

Die JavaScript-strict mode-only-Ausnahme "'caller', 'callee' und 'arguments' Eigenschaften dürfen in strikten Funktionen oder den argument objects von Aufrufen an sie nicht zugegriffen werden" tritt auf, wenn die veralteten arguments.callee, Function.prototype.caller oder Function.prototype.arguments Eigenschaften verwendet werden.

Nachricht

TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them (V8-based & Firefox)
TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context. (Safari)

Fehlertyp

Was ist schief gelaufen?

Im strict mode werden die Eigenschaften arguments.callee, Function.prototype.caller oder Function.prototype.arguments verwendet und sollten es nicht sein. Sie sind veraltet, weil sie den Funktionsaufrufer durchsickern lassen, nicht standardisiert sind, schwer zu optimieren und potenziell eine leistungsschädliche Funktion sind.

Beispiele

Veraltete function.caller oder arguments.callee

Function.prototype.caller und arguments.callee sind veraltet (siehe die Referenzartikel für weitere Informationen).

js
"use strict";

function myFunc() {
  if (myFunc.caller === null) {
    return "The function was called from the top!";
  }
  return `This function's caller was ${myFunc.caller}`;
}

myFunc();
// TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

Function.prototype.arguments

Function.prototype.arguments ist veraltet (siehe den Referenzartikel für weitere Informationen).

js
"use strict";

function f(n) {
  g(n - 1);
}

function g(n) {
  console.log(`before: ${g.arguments[0]}`);
  if (n > 0) {
    f(n);
  }
  console.log(`after: ${g.arguments[0]}`);
}

f(2);

console.log(`returned: ${g.arguments}`);
// TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

Siehe auch