/ janturon.cz / Výuka / Javascript / O funkcích a proměnných

O funkcích a proměnných

Výstup programu

Ať už se učíte jakýkoliv jazyk, první program vždycky bývá vypsat na obrazovku Hello, world!. Vytvořte soubor v textovém editoru helloworld.html a vepište do něj:

<script> alert("Hello, world!"); </script>

uložte a otevřete v prohlížeči. Vychutnejte si vysokou úroveň programu: dialogové okno spuštěné jedinou funkcí alert obsahuje ikonu a funkční tlačítko a křížek a je možné ho přesunout, aniž bychom to museli programovat. Zkuste soubor spustit v jiném prohlížeči: jiný interpret, jiný vzhled. To bohužel nejde javascriptem změnit. Daň za jednoduchost.

Veškerý text v Javascriptu píšeme do uvozovek.

Vstup programu

Druhý program, který byste si měli v jakémkoliv jazyku vyzkoušet, je zdravící program. Uložte do souboru a spusťte v prohlížeči následující kód:

<script> name = prompt("What is your name?"); alert("Hello, "+name); </script>

Funkce prompt po svém skončení (odkliknutím) uloží svůj výstup pomocí operátoru = do proměnné vlevo od něj. Pořadí je důležité, do levé hodnoty (lvalue) musí být možné zapisovat, příkaz prompt("What is your name?") = name; skončí chybou (všimněte si, jak váš prohlížeč hlásí chyby).

Značka <script> je povel prohlížeči, aby kód uvnitř interpretoval, bez ní se zobrazí jako prostý text a nic se neprovede.

Funkce

Funkce je pojmenovaný soubor příkazů, který může vracet hodnotu uložitelnou do proměnné. Některé funkce (například alert) nic nevrací, v tom případě se do proměnné uloží konstanta null.

Funkce alert (výstup) a prompt (vstup) jsou nativní: jejich kód je napsán v nižším jazyce (C) a zakompilován přímo do prohlížeče. Můžeme psát i vlastní uživatelské funkce:

function getName(message) { var name = prompt(message); alert("Děkuji"); return name; } var teacher = getName("Zadej jméno učitele"); var student = getName("Zadej jméno studenta"); alert("teacher+" učí studenta "+student);

Každá funkce má svou definici: ta se uvádí slovem function za níž následuje jméno funkce. Potom v závorkách seznam parametrů: i kdyby funkce žádné parametry nepotřebovala, stejně tam ty závorky musíme napsat: (). Potom následují složené závorky a v nich seznam příkazů, které funkce provádí.

Pár pravidel:

Definice funkce musí být jenom jedna a musí být před všemi voláními funkce. Volání může být v kódu vícekrát a pokaždé provede příkazy v bloku definice, přičemž to, co se jí do kulatých závorek zadá, se pokaždé zkopíruje do jejího parametru, který lze využívat jako proměnnou POUZE v bloku funkce.

Kdekoliv bloku funkce (a nikde jinde) je možné použít příkaz return. Ten okamžitě volání funkce ukončí (případné příkazy za ním se už neprovedou) a vrátí hodnotu za ním. Funkce bez return vrací konstantu null.

Proměnné

Proměnná uchovává hodnotu, která se jí předá operátorem přiřazení =. Podobně jako funkci musíme před použitím definovat, proměnnou musíme před použitím (nebo při prvním použití) deklarovat slovem var. Deklarace kompilátoru říká, že proměnná platí v tomto a všech podřazených blocích. Pokud proměnná není deklarovaná, hledá se její deklarace v nadřazených blocích. Podívejte, jaké neočekávané chování může zapomenutí deklarace způsobit:

function getName(message) { name = prompt(message); alert("Děkuji"); return name; } var name = "Komenský"; var teacher = getName("Zadej jméno učitele"); var student = getName("Zadej jméno studenta"); alert(name);

Výstupem nebude Komenský, ale jméno studenta: v bloku nebyla proměnná name deklarována, a proto se hledala (a našla) v nadřazeném bloku, kde přepsala (2x) hodnotu. Naposledy uložená hodnota pak byla výstupem.

Vyjímka: v Javascriptu parametry funkcí nedeklarujeme, VŽDY platí pouze uvnitř funkce.

Identifikátor

Identifikátor je název proměnné či funkce. Můžeme zvolit jakkoliv jméno s následujícími omezeními:

 

Otázky