Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
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 dieKompatibilitä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:Diearguments-Eigenschaft vonFunction-Objekten ist veraltet. Der empfohlene Weg, auf dasarguments-Objekt zuzugreifen, besteht darin, auf die Variablearguments zu verweisen, die innerhalb von Funktionen verfügbar ist.
Diearguments Zugriffseigenschaft vonFunction-Instanzen gibt die Argumente zurück, die an diese Funktion übergeben wurden. Fürstrict, Pfeilfunktionen, asynchrone und Generatorfunktionen wirft der Zugriff auf diearguments-Eigenschaft einenTypeError.
In diesem Artikel
Beschreibung
Der Wert vonarguments ist ein array-ähnliches Objekt, das den Argumenten entspricht, die an eine Funktion übergeben wurden.
Im Fall von Rekursion, d.h. wenn die Funktionf mehrfach im Aufrufstapel erscheint, repräsentiert der Wert vonf.arguments die Argumente, die dem letzten Aufruf der Funktion entsprechen.
Der Wert derarguments-Eigenschaft ist normalerweisenull, wenn kein ausstehender Aufruf der Funktion gerade im Gange ist (d.h. die Funktion wurde aufgerufen, aber noch nicht beendet).
Beachten Sie, dass das einzige Verhalten, das durch die ECMAScript-Spezifikation festgelegt wird, darin besteht, dassFunction.prototype einen initialenarguments-Zugriffsmechanismus hat, der bedingungslos einenTypeError für jedeget- oderset-Anfrage auslöst (bekannt als "poison-pill accessor"), und dass Implementierungen nicht erlauben, diese Semantik für irgendeine Funktion außer nicht-strikten einfachen Funktionen zu ändern. Das tatsächliche Verhalten derarguments-Eigenschaft, wenn es mehr ist als nur einen Fehler zu werfen, wird durch die Implementierung bestimmt. Zum Beispiel definiert Chrome sie als eigene Dateneigenschaft, während Firefox und Safari den initialen poison-pillFunction.prototype.arguments-Zugriffsmechanismus erweitern, um speziellthis-Werte zu behandeln, die nicht-strikte Funktionen sind.
(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: nullSpezifikationen
Nicht Teil eines Standards.