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

 "hello".match(/[a-z]+/)
 to to samo co
 new String("hello").match(new RegExp("[a-z]+"))

Typy

JavaScript jest językiem dynamicznie typowanym. Funkcje/metody mogą przyjmować i zwracać wartości dowolnego typu. Zmienne deklaruje się słowem kluczowym var.

Brak deklaracji zmiennej za pomocą var spowoduje stworzenie zmiennej globalnej, co często powoduje subtelne błędy w większych programach. Dla pewności zawsze używaj var.

Spacja przed i po operatorach nie jest wymagana, tzw. liczba=100 to to samo co liczba = 100.

JavaScript ma typy proste number (liczby zmiennoprzecinkowe), boolean (wartości logiczne truefalse), 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(), lub pomnożenia przez 1 np. liczba="1"*1.

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 do number, 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ć tylko w 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.

Jeśli pominiemy słowo var podczas deklaracji zmiennej w funkcji, to stanie się ona zmienną globalną!

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 tablica_lub_obiekt), która pozwala przeglądać wszystkie pola danej tablicy lub 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: 03.09.2015, 04:52
submit