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

    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.

    Žádný příspěvek v diskuzi

    Odpovědět