Poradnik Webmastera

Kanał ATOM

Zapisz się na darmowy newsletter:
E-mail:

Imię:

Zgadzam się z Polityką Prywatności

Po zapisaniu się otrzymasz ten ebook:
Jak zwiększyć ruch na stronie WWW? 120 praktycznych wskazówek
Pozycjonowanie dzięki:
Darmowe Pozycjonowanie
Valid XHTML 1.0 Strict
Poprawny CSS!

Operatory arytmetyczne - Kurs języka JavaScript

<< Wstecz
Typy danych w JavaScript
^^ Spis treściDalej >>
Operatory porównania i relacyjne

Jak już wspomniałem w poprzedniej lekcji, operatory są jednym z podstawowych elementów tworzących wyrażenia w JavaScript. Począwszy od tej lekcji, będę opisywał je wszystkie. Na początek zacznę od operatorów arytmetycznych.

Operatory arytmetyczne jest to pierwsza grupa operatorów. Wiele z nich powinieneś/powinnaś już znać z pierwszych klas szkoły podstawowej (jeżeli masz je już za sobą i nadal masz z nimi problemy, szczerze radzę usiąść do książek z matematyki zamiast czytać dalej ten kurs). Do tej grupy zaliczają się następujące operatory:

  • + - dodawanie; np. 3 + 2 = 5;
  • - - odejmowanie; np. 3 - 2 = 1;
  • * - mnożenie; np. 3 * 2 = 6;
  • / - dzielenie; np. 3 / 2 = 1.5;
  • % - dzielenie modulo (inaczej reszta z dzielenia); np. 7 % 3 = 1;

Oprócz wymienionych powyżej operatorów które operują na dwóch argumentach, jest także kilka operatorów które operują na jednym argumencie (w skrócie operatory jednoargumentowe). Pierwszym z nich jest minus (-), który może być użyty do zmiany znaku liczby:

k = -n;

Kolejne operatory jednoargumentowe to operatory inkrementacji ++ i dekrementacji --. Pierwszy z nich powoduje zwiększenie wartości zmiennej o jeden, a drugi zmniejszenie o jeden. Można je stosować zarówno w wersji prefiksowej (czyli operator jest przed zmienną), lub postfiksowej (operator jest po zmiennej). Obydwa można tylko stosować względem zmiennej (lub czegokolwiek innego co zachowuje się jak zmienna, czyli pozwala na przypisanie wartości). Oto przykład:

var n = 5;
n++; // n = 6
++n; // n = 7
n--; // n = 5
--n; // n = 4

Różnica pomiędzy operatorami prefiksowymi a postfiksowymi polega na momencie kiedy jest on "uruchamiany" - ma to znaczenie przy bardziej złożonych wyrażeniach. Operatory prefiksowe obliczane są przed wyliczeniem wartości wyrażenia (inaczej mówiąc, JavaScript najpierw zmieni wartość zmiennej, a następnie odczyta i użyje wartość tej zmiennej w wyrażeniu). Operatory postfiksowe są natomiast obliczane po wyliczeniu wartości wyrażenia (tzn. JS najpierw odczyta sobie wartość zmiennej, a następnie zmieni wartość zmiennej.

var n1 = 1, n2 = 2;
var w1 = ++n1 + ++n2; // w1 = 5, n1 = 2, n2 = 3
var k1 = 1, k2 = 2;
var w2 = k1++ + k2++; // w2 = 3, k1 = 2, k2 = 3

Należy także uważać aby nie próbować zmieniać kilka razy wartości jednej zmiennej w trakcie obliczania wyrażenia - standard języka JavaScript nie definiuje co ma się stać w takim przypadku, zatem wyniki mogą być różne na różnych przeglądarkach. Dlatego warto inaczej zapisać swoje wyrażenie aby uniknąć tego problemu. Przykład takiego problematycznego wyrażenia jest poniżej:

var n = 5;
var k = n++ + n++; // k = 10 lub 11

Do grupy operatorów arytmetycznych zaliczają się też nawiasy ( ), które służą do zmiany priorytetu wykonywanych działań. W odróżnieniu od zwykle stosowanego zapisu matematycznego, w JavaScript stosuje się tylko i wyłącznie nawiasy okrągłe, także gdy trzeba je zagnieżdżać (inne typy nawiasów są zarezerwowane do innych celów).

var n = (2 + 3) * 4; // n = 20

Operator + jest także używany do łączenia ciągów znaków, np.:

var s1 = "Witaj";
var s2 = "na stronie";
var s3 = s1 + " " + s3; // s3 = "Witaj na stronie"

W języku JavaScript typy wartości użyte w wyrażeniu mogą być zamienione na inne, w zależności od wymogów operatora. Jest to szczególnie ważne w przypadku operatora +, gdyż w wyniku możesz otrzymać nie to o co Ci chodziło. Poniższa lista pokazuje jakie konwersje są dokonywane

  • suma liczby (Number) i ciągu znaków (String) - liczba zostanie zamieniona na ciąg znaków, wynik będzie ciągiem znaków;
  • suma wartości logicznej (Boolean) i ciągu znaków (String) - wartość logiczna zostanie zamieniona na ciąg znaków (będzie to "true" lub "false"); wynik będzie ciągiem znaków;
  • suma liczby (Number) i wartości logicznej (Boolean) - wartość logiczna zostanie zamieniona na liczbę (0 dla false i 1 dla true); wynik będzie liczbą.

Pozostałe operatory arytmetyczne pracują tylko na liczbach, więc przekazanie im parametrów innych typów spowoduje że język JavaScript będzie próbował konwertować je na liczbę.

Jeżeli chcesz jawnie zamienić ciąg znaków na liczbę, możesz użyć funkcji parseInt() (wynikiem będzie liczba całkowita, lub NaN jeżeli konwersja będzie niemożliwa), lub parseFloat() (wynikiem będzie liczba zmiennoprzecinkowa (rzeczywista), lub NaN jeżeli konwersja będzie niemożliwa). Możesz także dokonać mnożenia wartości przez 1 - wtedy konwersja także zostanie dokonana.

var n1 = "1";
var n2 = "2.5";
var n3 = "3";
n1 = parseInt(n1); // n1 = 1
n2 = parseFloat(n2); // n2 = 2.5
n3 = n3 * 1; // n3 = 3
var suma = n1 + n2 + n3; // suma = 6.5

Aby szybko zamienić wartość na ciąg znaków, możesz dodać do niej pusty ciąg znaków:

var n = 123;
n = n + ""; // n = "123"


Wykop tą stronę! >>> dodajdo.com
<< Wstecz
Typy danych w JavaScript
^^ Spis treściDalej >>
Operatory porównania i relacyjne
Ile masz lat?
8 lub mniej
9 - 12
13 - 16
17 - 20
21 - 26
27 - 35
36 - 50
51 lub wiecej
Pokaż wyniki

"Magazyn INTERNET" to miesięcznik poświęcony w całości globalnej sieci komputerowej. Prezentuje aktualności internetowe, praktyczne porady związane z sieciami komputerowymi, kursy dla webmasterów,...
Magazyn Internet - zobacz teraz!

Helion.pl
Tylko dzisiaj!
Zaoszczędzisz 30%!

Joomla! System zarządzania treścią
Cena: 30.8 zł 44 zł

PHP. 101 praktycznych skryptów
Cena: 29.6 zł

Ajax on Rails
Cena: 44 zł

PHP5. Radocha z programowania
Cena: 29.9 zł
Komputery Overclocking Grafika | Wczasy nad morzem | Inplus | noclegi | nfs pro street | foto kołobrzeg | Apteka Internetowa | daemon tools | crm

Page copy protected against web site content infringement by Copyscape
Copyright © 2003-2008 Daniel "Sir Zooro" Frużyński
Powielanie i dalsze rozpowszechnianie bez zezwolenia zabronione