Reklama

zonerbooks.cz | zoner.cz | czechia.com | regzone.cz | inshop.cz | inmail.cz | zonerpress.cz | zonerantivirus.com | zonerama.cz

interval.cz

Slabikář JavaScriptu - operátory a jejich použití

18. 03. 2002 | David Morkes | JavaScript a Ajax | Komentáře: 0

Po úvodním seznámení s proměnnými si nyní ukážeme, jak s hodnotami jednotlivých datových typů nakládat. Popíšeme operátory a jejich použití. Zvýšený důraz je ve výkladu kladen na ty charakteristiky JavaScriptu, které jsou buď odlišné od jiných programovacích jazyků nebo dělají začátečníkům problémy.

Operátory se v JavaScriptu dělí na aritmetické, logické a bitové. Většina operátorů je binárních (používají se se dvěma operandy - například operátor sčítání) nebo unárních (působí na jediný operand). U přehledu je vždy v závorce uveden operátor.

Aritmetické operátory

  • Sčítání (+)
  • Odčítání nebo unární negace (-)
  • Násobení (*)
  • Dělení (/)
  • Inkrementace - zvýšení o 1 (++)
  • Dekrementace - snížení o 1 (--)
  • Modulo - zbytek po dělení (%)

Operátory inkrementace (resp. dekrementace) zvyšují (resp. snižují) hodnotu proměnné o 1. Lze je použít různým způsobem:

var cislo = 1;
cislo++; // hodnota proměnné cislo bude 2
var alfa = cislo++; // po provedení hodnota proměnné alfa bude 2, hodnota cislo 3

cislo = 1;
alert(cislo++); // zobrazí se 1 a potom se teprve zvýší hodnota proměnné

cislo = 1;
alert(--cislo); // nejprve se sníží hodnota proměnné, a pak se zobrazí její obsah, tj. 0

Jak je vidět z příkladů, záleží na tom, zda operátory použijete v zápisu před nebo za proměnnou, jejíž hodnota se použitím operátoru mění. Pokud napíšete nejprve operátor a potom teprve název proměnné, změní se nejprve hodnota proměnné, a pak se teprve s proměnnou dále operuje (vstupuje do aritmetického výrazu, tiskne se hodnota apod.). V případě, že zapíšete operátor za název proměnné, je postup přesně opačný. Nejprve proměnná vstoupí do všech výrazů a teprve po jejich provedení se změní její hodnota.

Operátor modulo je duálním operátorem, jehož výsledkem je zbytek po celočíselném dělení:

var cislo = 10 % 3; // cislo bude mít hodnotu 1
cislo = 10 % (-3.5); // cislo bude mít hodnotu 3
cislo = -10 % 3.5; // cislo bude mít hodnotu -3
cislo = -10 % (-3.5); // cislo bude mít hodnotu -3

Myslím, že z příkladu je vše jasné. Operátory sčítání, odčítání, dělení a násobení jsou zřejmé. Dodejme jen, že zápis těchto operátorů lze zkracovat. Následující dva řádky jsou sémanticky stejné:

x = x + y;
x += y;

Logické operátory

  • Podmínkový ternární operátor (?:)
  • Rovná se (==)
  • Větší než (>)
  • Větší nebo rovno než (>=)
  • Menší než (<)
  • Menší nebo rovno než (<=)
  • Nerovná se (!=)
  • Identita (===)
  • Logický součin, tj. AND (&&)
  • Logický součet, tj. OR (||)
  • Logická negace (!)

Jako první je zapotřebí si uvědomit rozdíl mezi třemi operátory: =, == a ===. První z nich, reprezentovaný jednoduchým rovnítkem (=), znamená vždy přiřazení - tak jak jsme jej používali intuitivně v předcházejících příkladech. Druhý (==) je operátorem rovnosti, přičemž se porovnávají hodnoty proměnných nebo konstant. Třetí je operátor identity (===) a při porovnávání zde hraje roli i to, zda hodnota je uložena ve stejném objektu. Detailní rozdíl mezi rovností a identitou bude popsán v jednom z dalších dílů Slabikáře JavaScriptu, v nichž se budeme zabývat objektovými proměnnými. Výsledkem porovnání je vždy hodnota datového typu Boolean.

Podmínkový operátor si nejlépe vysvětlíme na příkladu

var max = (alfa>beta) ? alfa : beta;

Do proměnné max se přiřadí hodnota proměnné alfa, pokud je tato hodnota vyšší, než hodnota proměnné beta. Jinak bude do max přiřazena hodnota proměnné beta. Stejného výsledku lze dosáhnout třeba i takto:

var max;
(a>b) ? max=a : max=b;

Logický součin a součet jsou opět duální operátory, přičemž operandy musejí být výrazy, jejichž výsledkem je typ Boolean. Výsledkem logického součinu a součtu je opět Boolean. Následující tabulky, na kterých se nejlépe vysvětluje význam obou operátorů, asi znáte.

Operátor &&
  true false
true true false
false false false
Operátor ||
  true false
true true true
false true false

Bitové operátory

  • Bitový součin, tj. AND (&)
  • Bitový součet, tj. OR (|)
  • Bitová negace (~)
  • Bitový posun vlevo (<<)
  • Bitový posun vpravo (>>)
  • Bitová nonektivalence, tj. XOR (^)
  • Bitový posun vpravo bez znaménka (>>>)

Na tomto místě vysvětleme rozdíl mezi logickým a bitovým součtem a součinem. Zatímco logické operátory si všímají čísel jako celku, bitový operátor porovnává odpovídající dvojice bitů příslušných čísel.

var x = 1 & 2; // výsledek je 0
var y = 1 | 2; // výsledek je 3

Abyste porozumněli uvedenému příkladu, je zapotřebí rozložit čísla 1 a 2 do binární soustavy. Bitový operátor pak porovnává nulté, první, druhé atd. bity obou čísel. Stejně funguje i bitová negace nebo bitová nonekvivalence (XOR). Pokud u operace XOR jsou oba operandy stejné (oba jsou 0 nebo 1), je výsledkem 0. V případě, že jsou operandy různé, je výsledkem 1. Odtud pochází i název nonekvivalence.

Stručně k bitovým posunům - binární reprezentace čísla se posune vždy o určený počet míst vpravo (resp. vlevo), přičemž nově utvořená místa se doplní bitem znaménka čísla - u kladných čísel je to 0. Pokud posunujete vpravo o 1 bit, provádíte vlastně celočíselné dělení dvěma:

var x = 11 >> 1; // výsledek bude 5

Nalevo od operátoru bitového posunu je vždy posouvané číslo, vpravo se udává, o kolik bitů se má posun provést. Bitové operace jsem vzal zkrátka, protože jejich význam není v dnešním programování velký a pravděpodobně je budete používat jen velmi zřídka. Více se můžete o bitových operátorech dozvědět v JScript reference.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.


Reklama


Další aktuální články na interval.cz

Tematicky související články

Dejte vědět i ostatním o článku

Diskuse (počet komentářů: 0)

Buďte prvním návštěvníkem, který přidá nový komentář.

Přidat nový komentář

Jméno a e-mail jsou nepovinné. Příspěvky obsahující odkaz jsou moderovány.

Zoner AntiVirus Free pro Android
zabezpečte si svůj smartphone, zdarma
Profesionální eshop Zoner inShop od 990 Kč.
Reklama
Reklama

Syndikace

hledáme nové autory | redakce interval.cz | reklama na interval.cz

© ZONER software, a.s., všechna práva vyhrazena, interval.cz dodržuje právní předpisy o ochraně osobních údajů. Powered by WordPress.