Betrachten Sie diese JavaScript-Funktion:
%Vor% Ich würde erwarten, dass a
und arguments[0]
nur bis zur zweiten Anweisung der Funktion den gleichen Wert referenzieren. Stattdessen verweisen sie immer auf den gleichen Wert: f(2)
causes
und f({foo: 'bar'})
verursachen:
Sind Argument-IDs und der arguments
-Bezeichner auf besondere Weise verknüpft?
Sind Argument-Bezeichner und der Argument-Bezeichner auf besondere Weise verknüpft?
Ja (aber nur im nicht-strikten Modus).
Aus der Spezifikation ( ES6 , ES5 ):
Für nicht strikte Modusfunktionen teilen die ganzzahligen indexierten Dateneigenschaften eines
arguments
-Objekts, dessen numerische Name-Werte kleiner als die Anzahl der formalen Parameter des entsprechenden Funktionsobjekts sind, ihre Werte zunächst mit den entsprechenden Argumentbindungen in denAusführungskontext . Dies bedeutet, dass das Ändern der Eigenschaft den entsprechenden Wert der Argumentbindung ändert und umgekehrt. Diese Übereinstimmung wird aufgehoben, wenn eine solche Eigenschaft gelöscht und dann neu definiert wird oder wenn die Eigenschaft in eine Accessor-Eigenschaft geändert wird. Für strikte Modusfunktionen sind die Werte der Eigenschaften des arguments-Objekts einfach eine Kopie der Argumente, die an die Funktion übergeben werden, und es gibt keine dynamische Verknüpfung zwischen den Eigenschaftswerten und den formalen Parameterwerten.
Tags und Links javascript