Function.prototype.arguments
Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.
Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Hinweis:
Die Eigenschaft arguments
von Function
-Objekten ist veraltet. Die empfohlene Methode zum Zugriff auf das arguments
-Objekt besteht darin, auf die innerhalb von Funktionen verfügbare Variable arguments
zu verweisen.
Die arguments
-Zugriffseigenschaft von Function
-Instanzen gibt die an diese Funktion übergebenen Argumente zurück. Bei strict-, Arrow-, Async- und Generatorfunktionen führt der Zugriff auf die arguments
-Eigenschaft zu einem TypeError
.
Beschreibung
Der Wert von arguments
ist ein array-ähnliches Objekt, das den an eine Funktion übergebenen Argumenten entspricht.
Im Falle von Rekursion, d.h. wenn die Funktion f
mehrmals im Aufruf-Stack erscheint, repräsentiert der Wert von f.arguments
die Argumente, die dem letzten Aufruf der Funktion entsprechen.
Der Wert der arguments
-Eigenschaft ist normalerweise null
, wenn kein derzeitiger Aufruf der Funktion im Gange ist (d.h. die Funktion wurde aufgerufen, hat aber noch nicht zurückgegeben).
Beachten Sie, dass das einzige Verhalten, das durch die ECMAScript-Spezifikation festgelegt ist, darin besteht, dass Function.prototype
einen anfänglichen arguments
-Zugriff hat, der bei jedem get
- oder set
-Antrag bedingungslos einen TypeError
auslöst (ein sogenannter "poison pill accessor"), und dass Implementierungen nicht in der Lage sind, diese Semantik für Funktionen außer nicht-strikten einfachen Funktionen zu ändern. Das tatsächliche Verhalten der arguments
-Eigenschaft, falls es etwas anderes als das Auslösen eines Fehlers ist, ist implementierungsdefiniert. Beispielsweise definiert Chrome es als eigene Dateneigenschaft, während Firefox und Safari den anfänglichen poison-pill Function.prototype.arguments
-Zugriff erweitern, um this
-Werte, die nicht-strikte Funktionen sind, speziell zu behandeln.
(function f() {
if (Object.hasOwn(f, "arguments")) {
console.log(
"arguments is an own property with descriptor",
Object.getOwnPropertyDescriptor(f, "arguments"),
);
} else {
console.log(
"f doesn't have an own property named arguments. Trying to get f.[[Prototype]].arguments",
);
console.log(
Object.getOwnPropertyDescriptor(
Object.getPrototypeOf(f),
"arguments",
).get.call(f),
);
}
})();
// In Chrome:
// arguments is an own property with descriptor {value: Arguments(0), writable: false, enumerable: false, configurable: false}
// In Firefox:
// f doesn't have an own property named arguments. Trying to get f.[[Prototype]].arguments
// Arguments { … }
Beispiele
Verwendung der arguments-Eigenschaft
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}`);
// Logs:
// before: 1
// before: 0
// after: 0
// after: 1
// returned: null
Spezifikationen
Nicht Teil eines Standards.