Was ist der Zweck der Neuzuweisung von Argumentvariablen?

9

Mir ist klar, dass es aus Performance-Gründen sinnvoll ist, etwas wie ...

zu tun %Vor%

Wenn der Code auf window zugreift, muss er also nicht in der Scope-Kette nach oben gehen, um schließlich window zu finden. Dasselbe gilt für document , navigator , etc ...

Aber ich bin gerade dabei, einige der MobiScroll jQuery-Plugins neu zu schreiben und diese ... %Vor%

Was sind die Vorteile der Reinitialisierung von elm und dw , um auf ihre Argumentvariablen zu zeigen?

Ich habe eine Menge darüber gelesen, dass der Zugriff auf arguments teuer ist, aber ich habe nie etwas darüber gelesen, warum dies eine gute Methode ist.

Was sind die Vorteile dabei?

In der Vergangenheit habe ich absichtlich entfernt dieses Konstrukt aus der MDN-Dokumentation.

    
alex 24.08.2011, 01:10
quelle

2 Antworten

2
%Vor%
  

Wenn also der Code auf das Fenster zugreift, muss der Bereich nicht nach oben verschoben werden   Kette, um endlich ein Fenster zu finden.

Ich glaube nicht, dass das der Grund ist. Bei einer Funktion, die im globalen Gültigkeitsbereich deklariert ist, ist das Auflösen eines Bezeichners lokal gegen global geringfügig schneller (und möglicherweise langsamer, je nach Browser).

Skripte können etwas Ähnliches verwenden, um sicherzustellen, dass das Fenster sich auf das erwartete Fenster bezieht und nicht auf ein anderes Fenster in der Scope-Kette , z.B

%Vor%

Im zweiten Beispiel:

%Vor%

Die Angabe der Variablen ist völlige Zeitverschwendung. Wenn Sie einen Bezeichner in die Liste der formalen Parameter einer Funktionsdeklaration oder eines Ausdrucks einfügen, entspricht dies der Deklaration des Bezeichners mit var . Solche Bezeichner als lokale Variablen zu deklarieren hat keinerlei Auswirkungen.

Es gab eine frühe Version von Safari, die ein Problem mit formalen Parametern hatte, denen kein Wert übergeben wurde, aber das war lange her und war nur ein Problem in einem sehr speziellen Fall.

    
RobG 24.08.2011, 01:33
quelle
0

Der einzige logische Grund besteht möglicherweise darin, zu klären, in welchem ​​Umfang die Variable deklariert wurde.

Andere, als dass es nur überschüssigen Code hinzufügt.

    
William 24.08.2011 03:31
quelle

Tags und Links