Argumente und Referenz

8

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

%Vor%

und f({foo: 'bar'}) verursachen:

%Vor%

Sind Argument-IDs und der arguments -Bezeichner auf besondere Weise verknüpft?

    
Eric 02.03.2015, 16:43
quelle

1 Antwort

7
  

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 den Ausfü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.

    
Felix Kling 02.03.2015, 16:46
quelle

Tags und Links