Kurs JavaScript: Zmienne
Zmiennym można przypisać dowolny obiekt lub też wyrażenie generujące ten obiekt. W JavaScript funkcja także jest obiektem (ściślej jest obywatelem pierwszej klasy) i zawsze jest wartością pewnej wartości, chyba że jest anonimowa. Więcej o funkcjach w rozdziale "Funkcje".
Zmienne globalne
Domyślnym zasięgiem zmiennych jest obiekt główny. Innymi słowy domyślnie tworzone są zmienne globalne. Aby utworzyć taką zmienną wystarczy użyć jej nazwy w dowolnym miejscu kodu:
zmienna="napis"
Z powodów optymalizacyjnych oraz ze względu na specyfikę programów pisanych w JavaScript należy minimalizować liczbę zmiennych globalnych, idealnie do jednej.
Słowo kluczowe var
Zmienne lokalne deklarowane są poprzez słowo kluczowe var. Widoczność zmiennych lokalnych jest ograniczona do części bloku po deklaracji oraz każdego bloku w nim zawartego włącznie ze wszystkimi blokami wewnątrz funkcji zagnieżdżonych. Nie jest możliwy dostęp do tych zmiennych spoza bloku. Kod:
b=function()
{
var a=function()
{
alert(x)
}
var x=2
a()
}
b()wypisze 2. Funkcja a jest widoczna tylko wewnątrz funkcji b. Jak widać znacząca jest kolejność wykonania instrukcji a nie kolejność instrukcji w kodzie.
var może przyjmować wiele deklaracji oddzielonych przecinkiem. Zmiennym tym można nadawać wartości. Przykład złożonej deklaracji:
var a,
b=2,
c=(b===2) ? 1 : 3,
d=null,
e=d || {},
f=function(x,y){return x+y},
g=function(x,y){return x+y}(b,c)Wartości i referencje
Niektóre obiekty w JavaScript są przekazywane przez wartości inne przez referencje. Te pierwsze nazwiemy obiektami o typie prostym, natomiast pozostałe o typie złożonym. Warto rozróżnić te dwie klasy obiektów ponieważ w zaawansowanych programach bardzo łatwo jest zrobić błąd przy przypisaniach. Więcej na ten temat w "Operator przypisania".
Zmiana wartości typu prostego zmienia wartość, a referencji tylko tą referencję nie ruszając wartości. Nie ma możliwości zbadania czy zmienna jest wartością czy referencją. Jedynym sposobem jest przeczytanie w dokumentacji jak się zachowuje obiekt dostarczony przez środowisko. Zazwyczaj tablice oraz wszystkie obiekty użytkownika są przekazywane przez referencje, a pozostałe przez wartość.

