Základy JavaScriptu
Základní elementy JavaScriptu
 Tisk

Základní elementy JavaScriptu

Komentáře

Komentáře na jednom řádku začínají dvojicí lomítek (//) a vše do konce řádku je považováno za komentář. Víceřádkový komentář začíná kombinací lomítka a hvězdičky (/*) a končí kombinací obrácenou (*/).

     dobry_napad = "přidávejte komentáře";

     // Toto je komentář na jedné řádce

     /*

     Toto je víceřádkový komentář, který něco vysvětluje

     a vysvětluje a vysvětluje…

     */


     // Toto je další víceřádkový komentář rozepsaný.

     // do několika jednořádkových komentářů.

Přiřazení a rovnost

Rovnítko (znak =) je v JavaScriptu používán k přiřazení hodnoty. V kódu JavaScriptu lze přiřazení zapsat:

     CeleCislo = 3;

Pokud chcete porovnat dvě hodnoty, musíte použít dvojici rovnítek (==).

Identifikátory

Identifikátor je v JavaScriptu název proměnné nebo funkce. JavaScript je tzv. case-sensitive jazyk (rozlišuje malá a velká písmena). Identifikátor proměnné mujCitac není shodný s identifikátorem MUJcitac (jde o dva různé identifikátory). Identifikátory proměnných mohou mít libovolnou délku, musí však respektovat následující pravidla:

Několik příkladů správně vytvořených identifikátorů:

     _pocetstranek

     Cast9

     Ciselne_Casti

Několik příkladů nesprávně vytvořených identifikátorů:

     99Balonku // Začíná číslicí.

     Novak&Syn // Ampersand (&) není přípustný znak

               // v identifikátoru proměnné.

Výrazy

Výraz je definován jako libovolná kombinace hodnot, proměnných, operátorů a jiných výrazů, kterou lze vyhodnotit. Každý výraz v JavaScriptu může stát samostatně jako příkaz. Např. přiřazení, volání metody, inkrementace, dekrementace jsou výrazové příkazy. Příklady výrazů:

     vyraz = "3 * (4 / 5)";

     druhy = "Math.PI * radius * 2";

     treti = druhy + "%" + vyraz;

     ctvrty = "(" + druhy + ") % (" + vyraz + ")";

Klíčová slova JavaScriptu

JavaScript obsahuje řadu klíčových slov. Klíčové slovo nesmí být použito např. v názvu proměnné nebo funkce. Existují tři druhy klíčových slov. Rezervovaná, klíčová slova pro budoucí užití a slova, kterých je lépe se vyvarovat. Všechna klíčová slova se zapisují malými písmeny.

Rezervovaná

break false in switch var
continue for new this void
delete function null true while
else if return typeof with

Budoucí

case debugger export super
catch default extends throw
class do finally try
const enum import


Poslední z výše uvedených kategorií klíčových slov jsou taková, která už jsou použita pro vnitřní objekty nebo vestavěné funkce. Například slova jako String, parseInt apod. Použití slova z prvních dvou kategorií vyvolá vždy chybu při kompilaci. Třetí kategorie sice teoreticky přinést problémy nemusí, ale stejně se jim ve vlastním zájmu vyhněte. Následující příklad ilustruje špatné použití identifikátoru String.

     var String;

     var text = new String("tohle je objekt String");

V tomto případě obdržíte chybové hlášení o tom, že String není objekt.

Proměnné a datové typy

V JavaScriptu je definováno šest datových typů. Hlavními jsou čísla, řetězce, objekty a logické hodnoty. Zbývající dva typy jsou null a undefined (nedefinovaný).

Proměnné

Proměnná je pojmenovaný objekt, který obsahuje data nebo ukazuje na data. Jméno proměnné se nazývá identifikátor.

Deklarace proměnných

Deklarace proměnných v JavaScriptu není nutná, proměnná se vytvoří v okamžiku jejího prvního použití. Pokládá se však za dobrý programátorský návyk deklarovat proměnné před jejich užitím. Proměnnou deklarujete pomocí klíčového slova var. Jediným případem, kdy je použití var povinné, jsou deklarace lokálních proměnných ve funkci. Ve všech ostatních případech je užití var k deklaraci proměnných nepovinné.

Následující příklady ukazují různé možnosti deklarace proměnných:

     var a;

     var x, y, z;

     var mim = "Nejradši mám Václava!";

     // hodnota uložená v mim je typu řetězec.

     // Věta v uvozovkách je přiřazena proměnné mim.

     var ror = 3; // Hodnota uložená v ror je

     // celé číslo

     var nen = true; // Logická hodnota

     var fif = 3.1415927; // Reálné číslo

Z příkladů je vidět, že deklaraci proměnné je možné spojit s přiřazením hodnoty. V případě, že chcete deklarovat proměnnou, inicializovat jí, ale nechcete jí přiřadit žádnou hodnotu, můžete jí přiřadit speciální hodnotu null.

     var nic = null;

     var co = 3 * nic; // hodnota v co bude 0

Pokud deklarujete proměnnou bez přiřazení počáteční hodnoty, potom existuje, ale její hodnota je undefined.

     var Godota;

     var cekaniNa = 1 * Godota;// v cekaniNa bude

     // hodnota NaN (Not a Number)

     // protože Godota je undefined.

Proměnnou lze deklarovat implicitně (bez použití var) pouhým přiřazením hodnoty. Není však pochopitelně možné používat ve výrazech proměnnou, která nebyla nikde deklarována. V těchto případech nastane při běhu programu chyba.

     lel = ""; // proměnná je deklarována implicitně

     var neco = aaa + bbb; // vygeneruje chybu,protože

                           //aaa a bbb neexistují (nebyly deklarovány)

Literály a čísla

Literál je datová hodnota, která se objevuje přímo v programu. Jsou to čísla, řetězce, logické hodnoty true a false a hodnota null.

JavaScript podporuje jak celá tak reálná čísla. Celé číslo může být kladné, nula nebo záporné. Reálné číslo může obsahovat desetinnou tečku a znak E (e) pro exponent. Dále jsou definovány speciální číselné hodnoty:

  NaN Specielní nečíselná hodnota. Je vrácena např. při dělení nulou.
  MAX_VALUE Největší prezentované číslo.
  MIN_VALUE Nejmenší prezentované číslo.
  POSITIVE_INFINITY Specielní hodnota pro prezentaci kladného nekonečna.
  NEGATIVE_INFINITY Specielní hodnota pro prezentaci záporného nekonečna.

Čísla v osmičkové soustavě začínají znakem 0 (nula) a mohou obsahovat číslice od 0 do 7. Pokud číslo začíná 0, ale obsahuje číslice 8 nebo 9, je považováno za číslo v desítkové soustavě. Číslo s předřazenou nulou, které obsahuje písmeno e (nebo E), je nepřípustné.

Čísla v šestnáctkové soustavě jsou určena počátečními znaky 0x (x může být jak velké, tak malé písmeno) a mohou obsahovat číslice od 0 do 9 a písmena od A do F (ať již velká či malá). Písmeno e (E) je v šestnáctkové soustavě běžnou číslicí a neoznačuje proto exponent.

Čísla v osmičkové a šestnáctkové soustavě mohou být kladná i záporná, ale mohou být pouze celá. Číslo, které začíná jednou nulou a obsahuje desetinnou tečku, je považováno za reálné číslo v desítkové soustavě. Pokud číslo začíná 0x nebo 00, je vše napravo od desetinné tečky ignorováno.

Několik příkladů čísel (pokud není uvedena soustava, jde o desítkovou):

     .0001, 0.0001, 1e-4, 1.0e-4   // Čtyři reálná čísla se stejnou hodnotou

     6.66e2    // Reálné číslo s hodnotou 666

     23        // Celé číslo.

     0377      // Číslo v osmičkové soustavě

               // odpovídající desítkovému 255

     00.0001   // Protože čísla v osmičkové soustavě

               // nemohou mít neceločíselnou část,

               // je takto zapsané číslo rovné 0.

     0378      // Celé číslo s hodnotou 378.

     0Xff      // Celé číslo v šestnáctkové soustavě

               // s hodnotou 255.

     0x37CF    // Celé číslo v šestnáctkové soustavě

               // s hodnotou 14287.

     0x3e7     // Celé číslo v šestnáctkové soustavě

               // s hodnotou 999.

     0x3.45e2 // Protože čísla šestnáctkové

               // soust. nemohou mít neceločíselnou

               // část, je toto číslo rovno 3.

Řetězce

Řetězce jsou vymezeny jednoduchými nebo dvojitými uvozovkami (jednoduché uvozovky používejte pro řetězce obsahující dvojité uvozovky např. 'Král zvolal: "Zdravím vás!".' Řetezec je speciální případ objektu, se speciálními atributy. Příklady řetězců:

     "Kráva Stračena dostala nemoc šílených krav."

     '"Utečte, grázlové!" řekl Jarka Metelka.'

     "23"

Řetězec může obsahovat libovolný počet znaků. Pokud neobsahuje žádný znak (prázdný řetězec), zapisuje se "".

Logické hodnoty

Možné hodnoty jsou true a false (pravda, nepravda). Jedná se o speciální hodnoty, které neodpovídají číslům 1 a 0.

Pokud např. při porovnávání nabude libovolný výraz hodnoty 0, je brán jako false, nenulový výraz jako true. Například následující výraz má hodnotu true: (false == 0).

Příklad využití logické hodnoty − viz ukázka .

Funkce

Funkce je část kódu JavaScriptu, který je v programu jednou definován a může být proveden nebo vyvolán vícekrát v průběhu programu. Funkce mohou mít parametry, které specifikují hodnotu nebo hodnoty, s nimiž může funkce pracovat. Funkce může vracet hodnotu. Příklad definice funkce:

     function soucet(x, y) {

     return x + y;

     }    // pomocí klíčového slova return se definuje

          // vrácená hodnota

Pokud je funkce jednou definována, můžeme ji vyvolat tak, že za názvem funkce následuje čárkami oddělený seznam parametrů. Například:

     y = soucet (a, b);

Neobvyklým rysem JavaScriptu je to, že funkce jsou skutečnými datovými typy. To znamená, že funkce mohou být ukládány jako proměnné, pole a objekty. Funkce pak mohou být předány jako parametry jiným funkcím.

Funkcemi se budeme zabývat podrobněji později.

Příklad využití funkce − viz ukázka .

Objekty

Objekt je soubor pojmenovaných dat. O pojmenovaných datech objektu hovoříme jako o vlastnostech objektu. Na vlastnost objektu odkazujeme pomocí tečky umístěné mezi jménem objektu a jeho vlastností. Máme-li např. objekt window (objekt okna prohlížeče), lze na jednotlivé vlastnosti odkazovat následovně:

     window.history

     window.document

Vlastnosti objektů se v mnoha ohledech chovají jako proměnné JavaScriptu a mohou obsahovat jakýkoli typ dat včetně polí, funkcí a jiných objektů. Pokud je ve vlastnosti objektu uložena funkce, nazýváme ji metodou. Například objekt document má definovánu metodu write, která vypíše zadaný text:

     document.write("Napíše se tento text")

Objekty se budeme zabývat podrobněji později.

Ilustrace využití objektů − viz ukázka .

Pole

Pole je souborem datových hodnot. Každá datová hodnota v poli má index (může jím být pouze celé číslo). Složky pole mohou obsahovat jakýkoli datový typ JavaScriptu, včetně odkazů na jiná pole nebo objekty či funkce. Indexy pole se zapisují do hranatých závorek a začínají vždy nulou. Například: Tiskarna[7] odkazuje na osmý prvek pole.

JavaScript podporuje pouze jednorozměrná pole. Typem pole se budeme zabývat podrobněji později.

Jednoduchý příklad využití pole je na ukázce .

Datové typy undefined a null

Před přiřazením hodnoty do proměnné je její hodnota undefined (je vlastně hodnotou proměnné, která je jí přiřazena po její deklaraci, ale ještě před přiřazením hodnoty). Hodnota null je obdobou toho, čemu se říká „prázdná hodnota“. Rozdíl mezi undefined a null je v tom, že null naznačuje, že jste příslušnou proměnnou z nějakého důvodu pouze deklarovali a zatím jí nepřiřadili žádnou hodnotu, zatímco undefined znamená, že jste s touto proměnnou dosud nepracovali. Datový typ undefined nelze do proměnné přiřadit.

Typová konverze

Vzhledem k tomu, že JavaScript je netypový jazyk, proměnné neobsahují hodnoty nějakého pevného typu. Místo toho jsou typově ekvivalentní s hodnotou, kterou obsahují. Za jistých okolností je možné provést automatickou konverzi proměnné určitého typu na typ jiný. Čísla je možné jednoduše převést na řetězce, ale řetězce nemohou být převedeny přímo na čísla. Z tohoto důvodu jsou definovány funkce parseInt() a parseFloat().

     var p_Od = 1;

     var p_Do = 10;

     var delejCo = "Počítej od ";

     delejCo += p_Od + " do " + p_Do + ".";

Po vykonání kódu obsahuje proměnná delejCo řetězec "Počítej od 1 do 10." Číselné hodnoty proměnných p_Od a p_Do byly konvertovány na typ řetězec.

     var ted = 0;

     ted += 1 + "10";   // v tomto případě operátor +=

                        // spojuje řetězce, protože "10"

                        // je řetězec (neslouží tedy ke sčítání)

Po provedení kódu proměnná ted obsahuje "0110". Popíšeme si způsob „práce“ interpretu JavaScriptu v tomto případě. Podívejme se na typy hodnot 1 a "10". "10" je řetězec, 1 je číslo; číslo je přetypováno na řetězec. Protože hodnoty na obou stranách operátoru + jsou řetězce, provede se součet (spojení) řetězců. Výsledkem bude řetězec "110". Na levé straně přiřazovacího příkazu obsahuje proměnná ted číslo, zatímco na pravé straně je "110" (řetězec). Proto je hodnota ted konvertována na řetězec. Jelikož jsou řetězce na obou stranách, provede se spojení řetězců. Výsledek je "0110". Výsledek se uloží do proměnné ted.

     var potom = 0;

     potom += 1 + parseInt("10");     // v tomto

                                      // případě "+=" provede součet

Po vykonání kódu bude proměnná potom obsahovat hodnotu celočíselného typu 11.