JAVASCRIPT Zasięg zmiennych
Omówimy pokrótce zagadnienie zasięgu zmiennej w odniesieniu do sposobu deklaracji zmiennej jako var, let oraz stałej const. Zajmiemy się tematyką zasięgu zmiennych, to jest zagadnieniem utrzymywania zadeklarowanej wartości w danym obszarze skryptu. Obszar ten może być globalny – wartość zmiennej jest widoczna w całym skrypcie, funkcyjny – zmienna zadeklarowana wewnątrz funkcji istnieje tylko wewnątrz niej, oraz zasięg blokowy – zmienna istnieje w danym bloku instrukcji, np. wewnątrz instrukcji warunkowej jeżeli (if).
Na początek prześledźmy zachowanie deklaracji przy użyciu słówka var.
Pierwsza deklaracja var x = 1 jest zmienną globalną, jej zasięg obejmuje obszar do końca skryptu. Druga deklaracja jest deklaracją zmiennej o zasięgu funkcyjnym. Łatwo się domyśleć, że pierwsze wypisanie w konsoli da wynik 2. Kolejne wypisanie nie jest już takie oczywiste. Daje nam ono rezultat 3, mimo, że zdawałoby się (kojarząc języki programowania wysokiego poziomu, np. C++), że deklaracja x = 3 wewnątrz instrukcji warunkowej będzie miało zasięg blokowy. Jednak nie, deklaracja za pomocą var ma zasięg funkcyjny, także ustawiona wartość nawet wewnątrz if, kolokwialnie mówiąc wychodzi poza instrukcję warunkową i taka nadal pozostaje.
Jak łatwo się domyśleć, skoro var ma zasięg funkcyjny, trzecie wypisanie nie trzyma już wartości z wewnątrz funkcji. Posiada wartość globalną, ustawioną na samym początku czyli 1.
Zmodyfikujmy nieco powyższy przykład, wprowadzając wewnątrz instrukcji warunkowej deklarację za pomocą let.
Zmieniły nam się wyniki wypisane w konsoli. Let ma zasięg blokowy, stąd deklaracja wewnątrz instrukcji warunkowej działała tylko tam, nie miała wpływu na zmianę wartości wcześniej zadeklarowanej zmiennej x.
Prześledźmy zachowanie deklaracji stałej const.
Na pierwszy rzut oka zachowanie wygląda identycznie jak w poprzednim przykładzie.
Aby zobrazować zachowanie const przyjrzyjmy się kolejnemu przykładowi:
Const ma na celu zabezpieczenie przed przypadkową zmianą wartości zmiennej, na której zależy nam, żeby pozostała w skrypcie stałą.