Zasięg zmiennych w JavaScripcie: scope lokalny i globalny

Zasięg zmiennej, czyli scope, decyduje o tym, skąd da się ją odczytać. W JavaScripcie rozstrzyga o tym miejsce deklaracji: zmienna zadeklarowana w funkcji żyje tylko w niej, zmienna spoza funkcji jest widoczna w całym skrypcie. Oto różnica między zmienną lokalną a globalną i powód, dla którego warto trzymać się tej pierwszej.

Zasięg zmiennych w JavaScripcie: scope lokalny i globalny

W JavaScripcie zmienne mają zasięg, po angielsku scope. To ważne pojęcie w JavaScripcie, bo bardzo często bywa źródłem błędów. Zasięg zależy od miejsca, w którym deklarujesz zmienną. Jeśli deklarujesz ją w funkcji, użyjesz jej tylko w tej funkcji. Zmienne dzielą się na dwa rodzaje: zmienne lokalne i zmienne globalne.

javascript
var tutu = "tutu"; // 1

function maFonction() {
    var toto = "toto"; // 2
    return toto;
}
  1. tutu to zmienna globalna: możesz jej użyć w dowolnym miejscu skryptu, także wewnątrz funkcji.
  2. toto to zmienna lokalna: poza swoją funkcją jest niedostępna.

Zmienna lokalna

Kiedy tworzysz zmienną wewnątrz funkcji za pomocą var, korzystasz z niej wyłącznie w tej funkcji. Mówimy wtedy, że zmienna jest lokalna, albo że ma zasięg funkcji, w której ją zadeklarowano. Poza nią nie da się jej odczytać. Przeglądarka tworzy zmienne lokalne w chwili wywołania funkcji i kasuje je, gdy funkcja skończy pracę. Warto też wiedzieć:

  • Dwie różne funkcje mogą używać zmiennych o tej samej nazwie i nie wywoła to konfliktu nazw.
  • Jeśli funkcja zostanie wywołana kilka razy, ta sama zmienna może za każdym razem trzymać inną wartość.

Zmienna globalna

Zmiennych globalnych używasz w dowolnym miejscu skryptu, a deklaruje się je poza funkcją. Mówimy wtedy o zasięgu globalnym.
Zmienne globalne siedzą w pamięci przeglądarki. Zajmują więcej miejsca niż lokalne i zwiększają ryzyko konfliktu nazw z innymi skryptami. Dlatego tam, gdzie to możliwe, wybieraj zmienne lokalne.

JavaScript

Damien Flandrin Web developer od 2010 roku, twórca Gekkode i Email Impact. Każdy artykuł jest sprawdzany na prawdziwym projekcie przed publikacją. Kontakt
Newsletter

Nowe testy, poradniki i projekty, e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.