2011-11-17 10 views

Odpowiedz

6

To pomija kod mający zrobić odnośnika zakresu od global jest zawężona wewnątrz funkcji.


Edytuj - Jest to optymalizacja wydajności. Zakres w javascript jest ograniczony do zakresu funkcji. global w tym przypadku jest definiowany w ramach tego zakresu, więc gdy kod trafi global[...], sprawdza swój bezpośredni zasięg (w ramach funkcji) i od razu znajduje global. Bez tego musiałby wtedy przejść do zakresu zamknięcia, który w tym przypadku jest globalnym obszarem nazw javascript, i przeszukania całego zakresu dla window.

+0

Kiedy te małe różnice w wydajności będą miały znaczenie? – delnan

+1

Tak. Możesz myśleć o 'global' jako o wskaźniku do okna, coś w rodzaju mówienia pseudonimu jest szybsze niż wymawianie prawnego imienia osoby. –

+1

@Delnan - jeśli możesz zrobić coś lepszego, dlaczego nie chcesz tego zrobić? –

2

Interpreter JavaScript w przeglądarce musi określać zasięg dowolnych zmiennych, zaczynając od lokalnego zasięgu i przesuwając się na zewnątrz. Użycie zamknięcia funkcji z window jako parametru global redukuje potrzebę rozszerzenia w górę łańcucha zasięgu, aby znaleźć window.

windowjest dostępne wszędzie, ale przy użyciu global tak jest w Twój przykład jest bardziej wydajnych.

Powiązane problemy