TypeError: 'caller', 'callee' und 'arguments'-Eigenschaften dürfen nicht zugegriffen werden
Die JavaScript-Strict Mode-nur-Exception "'caller', 'callee' und 'arguments'-Eigenschaften dürfen nicht auf Strict Mode-Funktionen oder die 'arguments'-Objekte zugegriffen werden" tritt auf, wenn die veralteten arguments.callee
, Function.prototype.caller
oder Function.prototype.arguments
Eigenschaften verwendet werden.
Meldung
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
TypeError
nur im Strict Mode.
Was ist schiefgelaufen?
Im Strict Mode werden die arguments.callee
, Function.prototype.caller
oder Function.prototype.arguments
Eigenschaften verwendet, und sollten es nicht sein. Sie sind veraltet, da sie den Funktionsaufrufer offenlegen, nicht standardisiert sind, schwer zu optimieren und potenziell eine leistungsverschlechternde Funktion darstellen.
Beispiele
Veraltete function.caller oder arguments.callee
Function.prototype.caller
und arguments.callee
sind veraltet (siehe die Referenzartikel für weitere Informationen).
"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).
"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