Podstawy JavaScript
Jeśli dobrze znasz inny język programowania poza JavaScript (PHP, C, C++, Java), to zobacz różnice między JavaScript, a innymi językami.
Składnia języka
Podstawy JS są opisane na Wikipedii. Polecamy również A re-introduction to JavaScript na MDC
Różnice między JS a innymi językami
Składnia
- Średniki są opcjonalne
- Można umieszczać wyrażenia regularne bezpośrednio w kodzie programu:
"hello".match(/[a-z]+/)
to to samo co(new String("hello")).match(new RegExp("[a-z]+"))
Typy
JavaScript jest luźno typowany. Funkcje/metody mogą przyjmować i zwracać wartości dowolnego typu. Zmienne deklaruje się słowem kluczowym var
.
JavaScript ma typy proste number
(liczby zmiennoprzecinkowe), boolean
(wartości logiczne true
i false
),
string
(stałe napisowe) i obiekty. Funkcje, tablice i przestrzeń globalna to wszystko są obiekty. Typy proste są przekazywane przez wartość, a obiekty przez referencję.
Konwersja
Konwersja string
do number
wymaga użycia funkcji parseInt()
.
Przy łączeniu string
z innymi typami, konwersja do string robiona jest automatycznie (napisy łączy się operatorem +
). Każdy obiekt może określić jak będzie wyglądał jako
string
definiując metodę toString()
.
Specjalne obiekty
-
undefined
- nieistniejące pola obiektu lub brakujące argumenty funkcji
-
null
- brak wartości w istniejącym polu/argumencie
-
NaN
-
specjalna, błędna wartość liczbowa (np. nieudana konwersja
string
donumber
, dzielenie przez zero) -
this
- referencja do obiektu na rzecz którego została wywołana metoda lub obiekt, który wywołał zdarzenie
-
arguments
- tablica zawierająca argumenty do funkcji
-
obiekt globalny (w przeglądarkach to
window
) - obiekt zawierający referencje do zmiennych i funkcji „globalnych”
Funkcje
Funkcje deklaruje się słowem kluczowym function
. Można tworzyć funkcje anonimowe.
Funkcje są „obywatelem pierwszej kategorii” w JavaScript i mogą być tworzone, kopiowane i przekazywane jak wszystkie inne obiekty.
Nie ma deklaracji funkcji, są tylko definicje. JavaScript nie wymaga deklaracji czegokolwiek. Zmienne muszą istnieć w tylko momencie ich użycia.
Zasięg zmiennych
Zmienne lokalne są widoczne w całej funkcji. Poza blokiem funkcji żadne inne bloki nie ograniczają zasięgu zmiennych (np. zmienne zadeklarowane wewnątrz pętli będą widoczne poza nią).
JavaScript ma tzw. closures, czyli funkcje mogą się zawsze odwoływać do zmiennych poza nimi w kontekście, gdzie te funkcje zostały stworzone.
Przekazanie funkcji do innej funkcji i wykonanie jej w innym kontekście zmieni najwyżej wartość zmiennej this
, ale reszta kontekstu będzie identyczna, jak podczas tworzenia funkcji.
Upraszczając: dla każdej funkcji wszystkie zmienne wokół niej są globalne.
Obiekty
Obiekty mogą być modyfikowane „w locie”. Można im dodawać i usuwać pola oraz metody.
JavaScript uzyskuje klasy poprzez tworzenie nowych obiektów jako kopię obiektu pod nazwą NazwaKlasy.prototype
, gdzie
NazwaKlasy
to funkcja używana jako konstruktor.
Obiekty mogą być używane jak tablica asocjacyjna (a właściwie to tablice są specyficznym rodzajem obiektu).
obiekt.pole
obiekt['pole']
for(i in obiekt) {obiekt[i]}
Przekazywane są zawsze przez referencję i nie ma wbudowanej metody na sklonowanie całego obiektu.
For
Pętla for
ma dodatkową składnię for(klucz in obiekt)
pozwala przeglądać wszystkie pola danego obiektu (podobnie do foreach
w innych
językach).
Operatory logiczne
Nie zwracają true
/false
, a wartości, które były porównywane, np. (4||7)
wynosi 4
, a ("foo"&&"bar")
równa się
"bar"
.
function(e) { e = e||event; }
Jeśli funkcja nie dostanie wartości w e, to użyje wartości (globalnej) zmiennej event.
Zmodyfikowano: 07.01.2007, 01:30