Platnost proměnných
Uvnitř funkce můžete vytvářet proměnné pomocí let a const stejně jako kdekoli jinde. Taková proměnná ale existuje jen uvnitř funkce: vznikne, když se funkce spustí, a zanikne, když funkce skončí. Mimo funkci ji JavaScript nezná:
function pozdrav() {
const zprava = "Ahoj!";
console.log(zprava);
}
pozdrav();
console.log(zprava);Tento kód vypíše Ahoj! a pak skončí chybou ReferenceError: zprava is not defined (zprava není definováno). Volání pozdrav() proběhlo v pořádku, ale poslední řádek hledá zprava mimo funkci, kde tato proměnná neexistuje. Stejné je to s parametry: existují jen uvnitř své funkce.
Části programu, ve které proměnná existuje, se říká obor platnosti proměnné (anglicky scope). Proměnná vytvořená uvnitř funkce je lokální: patří jen této funkci. Proměnnou vytvořenou mimo všechny funkce můžete používat v celém programu, i uvnitř funkcí:
const nazevObchodu = "Zverimex Packa";
function vypisStitek(produkt) {
console.log(`${nazevObchodu}: ${produkt}`);
}
vypisStitek("krmivo pro psy");Tento kód vypíše:
Zverimex Packa: krmivo pro psyProč je užitečné, že lokální proměnné zůstávají uvnitř svých funkcí?
- Funkce si navzájem nepřekážejí. Dvě funkce mohou mít každá svou proměnnou
celkema jsou to dvě různé proměnné: změna jedné nezmění tu druhou. - Abyste mohli funkci použít, stačí vědět, co jí dát (argumenty) a co vrací (návratovou hodnotu). Jak funguje uvnitř, je její věc.
- Každé volání začíná znovu: proměnné funkce vzniknou nanovo a nic z předchozího volání v nich nezůstane.
Když tedy potřebujete hodnotu zevnitř funkce, nesahejte po její proměnné. Vraťte hodnotu pomocí return a uložte si ji tam, kde funkci voláte.
Mimochodem, stejné pravidlo platí pro každý blok ve složených závorkách: proměnná vytvořená pomocí let nebo const uvnitř if nebo cyklu existuje jen v tomto bloku.
Jak psát:
Pokyny
Program skončí chybou ReferenceError: celkem is not defined, protože celkem existuje jen uvnitř funkce. Opravte ho: vraťte celkem z funkce. Pod funkcí uložte výsledek volání cenaObjednavky(25, 4) do proměnné ucet a místo celkem vypište ucet. Program vypíše 100.
Ke každé objednávce se navíc platí 5 za dopravu. Nad funkcí vytvořte proměnnou doprava s hodnotou 5. Uvnitř funkce ji přičtěte k celkové ceně, aby program vypsal 105.
Začněte programovat zdarma
7/10