Każdy język programowania (JavaScript nie jest tu wyjątkiem) pozwala na wykonywanie różnych obliczeń. Zapisuje się je stosując typowe symbole matematyczne, np. można obliczyć wartość wyrażenia (1 + 2) * (3 + 4):

document.write( (1 + 2) * (3 + 4) );

W wyniku wykonania tego skryptu na stronie powinien pojawić się obliczony wynik, czyli liczba 21.

W obliczeniach można stosować wiele różnych operatorów – omówię je wszystkie w kolejnych lekcjach kursu, rozpoczynając od lekcji Operatory arytmetyczne w JavaScript. Na razie wspomnę tylko że m.in. można korzystać z dodawania (+), odejmowania (-), mnożenia (*) i dzielenia (/). W razie potrzeby można także stosować nawiasy okrągłe (( )) do określania kolejności wykonywania działań. Należy pamiętać o tym, że jeżeli chcesz zagnieździć wyrażenia w nawiasach, zawsze należy stosować nawiasy okrągłe (nawiasy kwadratowe i klamrowe są zarezerwowane do innych celów, ale o tym później).

Rodzaje liczb

Liczby w wyrażeniach mogą to być liczby całkowite, bądź liczby zmiennoprzecinkowe (rzeczywiste). Te drugie zapisujemy oddzielając część ułamkową od całkowitej za pomocą kropki, np. 3.1415. Możliwy jest także zapis tzw. naukowy, w którym można podać dodatkowo wykładnik. Oddziela się go od liczby za pomocą małej literki “e“. Jest on użyteczny zwłaszcza przy zapisie bardzo małych albo bardzo dużych liczb. W tym zapisie liczba 1.234*1033 będzie zapisana jako 1.234e33.

W przypadku liczb całkowitych istnieje możliwość zapisu liczb w systemach dziesiętnym (to jest system domyślny), ósemkowym oraz szesnastkowym. Dla tych co jakoś nie mogą sobie przypomnieć odpowiedniej lekcji z matematyki, podaję krótką ściągawkę:

System dziesiętny: 12310 = 1*102 + 2*101 + 3*100 = 1*100 + 2*10 + 3*1 = 12310

System ósemkowy: 1238 = 1*82 + 2*81 + 3*80 = 1*64 + 2*8 + 3*1 = 8310

System szesnastkowy: 12316 = 1*162 + 2*161 + 3*160 = 1*256 + 2*16 + 3*1 = 29110

Dodatkowe informacje: w systemie dziesiętnym używa się dziesięciu cyfr (od 0 do 9). W systemie ósemkowym używa się ośmiu cyfr (od 0 do 7). W systemie szesnastkowym natomiast używa się szesnastu “cyfr”: są to cyfry od 0 do 9, oraz litery od A do F (A = 10, B = 11, C = 12, D = 13, E = 14, F = 15). Wielkość liter nie ma znaczenia.

System ósemkowy ma małe zastosowanie praktyczne – poza różnymi materiałami szkoleniowymi i kursami (takimi jak ten), używa się ich jedynie do określania praw dostępu do plików i katalogów w systemach Unix’owych. Z kolei system szesnastkowy jest stosowany bardzo często, z dwóch podstawowych powodów: pozwala on na zapisanie wartości jednego bajtu (8 bitów, wartości od 0 do 255) stosując dwa znaki (i są one wykorzystane w pełni, tzn. nie ma sytuacji jak w systemie dziesiętnym, gdzie stosując trzy znaki pozostałyby niewykorzystane wartości od 256 do 999), oraz bardzo ładnie daje się przeliczać na system binarny (inaczej dwójkowy) i odwrotnie – każda cyfra do dokładne 4 bity.

Wartości ósemkowe zapisuje się poprzedzając je zawsze dodatkową cyfrą zero (0), natomiast wartości szesnastkowe zawsze poprzedza się dwoma znakami “0x“. Zatem podane powyżej równości można byłoby zapisać następująco:

0123 = 83
0x123 = 291

Zmienne

Sytuacja taka jak w pierwszym przykładzie na tej stronie (wyliczoną wartość tylko należy wyświetlić i można o niej już zapomnieć) nie jest jedyną możliwą. Często potrzeba przechować wyniki obliczeń (czy też inne wartości) w celu późniejszego ich wykorzystania. Czasami też jest to pożądane w celu uproszczenia obliczeń – lepiej wyliczyć coś raz i zapisać wynik, niż liczyć kilka razy.

Język JavaScript posiada specjalny mechanizm służący do zapamiętywania wartości do późniejszego wykorzystania, a mianowicie zmienne. Możesz je traktować jako nazwane “schowki” w których możesz umieścić dowolną, pojedynczą wartość (próba umieszczenia tam innej wartości spowoduje usunięcie poprzedniej).

Każda nazwa zmiennej musi spełniać określone reguły: pierwszym znakiem może być tylko literą (z zestawu łacińskich liter, czyli bez polskich “krzaczków”), lub znakiem podkreślenia (_). Kolejne znaki mogą być literami łacińskimi, cyframi lub znakiem podkreślenia. Jest też dodatkowe ograniczenie – nazwy zmiennych nie mogą być żadnym zarezerwowanym słowem kluczowym. Poniżej znajdziesz kilka przykładów poprawnych i niepoprawnych nazw zmiennych:

  • abc – poprawna;
  • Moja_Zmienna_5 – poprawna;
  • __test__ – poprawna;
  • 5test – niepoprawna (cyfra na początku);
  • ilość – niepoprawna (polskie znaki w nazwie);
  • moja%zmienna – niepoprawna (znak procentu jest niedozwolony);
  • for – niepoprawna (zarezerwowane słowo kluczowe).

Warto także pamiętać, że wielkość znaków w nazwach zmiennych ma znaczenie (zmienna, Zmienna i ZmIeNnA to trzy różne zmienne).

Przed pierwszym użyciem warto zmienne zadeklarować korzystając ze słowa kluczowego var:

var suma;
var ilosc;

Można także zadeklarować więcej zmiennych na raz, rozdzielając je przecinkami:

var suma, ilosc;

Tak zadeklarowane zmienne nie posiadają przypisanej wartości (a dokładniej, posiadają specjalną wartość undefined – niezdefiniowana). W tym celu zmienną należy zainicjalizować. Robi się to poprzez przypisanie jej wartości w momencie deklaracji, lub później. W obydwóch przypadkach wykorzystuje się do tego celu znak równości:

var n1 = 1, n2 = 2;
var suma;
suma = n1 + n2 + 4;

Podany powyżej sposób deklarowania zmiennych przed użyciem nie jest obowiązkowy – można z niego zrezygnować, i przeglądarka i tak sobie poradzi z wykryciem że zamierzasz użyć nowej zmiennej. Polecam jednak deklarować zmienne z tego powodu, że tak napisany kod skryptu łatwiej się później analizuje.