11. března 2026

Proměnné

JavaScriptová aplikace musí většinu času pracovat s informacemi. Uvedeme dva příklady:

  1. Online obchod – informace se mohou týkat prodávaného zboží a nákupního vozíku.
  2. Chatovací aplikace – informace mohou zahrnovat uživatele, zprávy a mnoho dalšího.

K ukládání těchto informací se používají proměnné.

Proměnná

Proměnná je „pojmenovaný sklad“ dat. Proměnné můžeme používat k ukládání zboží, návštěvníků i jiných dat.

K vytvoření proměnné v JavaScriptu se používá klíčové slovo let.

Níže uvedený příkaz vytvoří (jiným slovem deklaruje) proměnnou s názvem „zpráva“:

let zpráva;

Nyní do ní můžeme uložit nějaká data pomocí operátoru =:

let zpráva;

zpráva = 'Ahoj'; // uložíme řetězec 'Ahoj' do proměnné jménem zpráva

Řetězec se nyní uloží do paměťové oblasti, která je vyhrazena pro tuto proměnnou. Můžeme k ní přistoupit pomocí názvu proměnné:

let zpráva;
zpráva = 'Ahoj!';

alert(zpráva); // zobrazí obsah proměnné

Abychom byli stručnější, můžeme zkombinovat deklaraci proměnné a přiřazení dat do jednoho řádku:

let zpráva = 'Ahoj!'; // definujeme proměnnou a přiřadíme jí hodnotu

alert(zpráva); // Ahoj!

Na jednom řádku můžeme deklarovat i více proměnných:

let uživatel = 'Jan', věk = 25, zpráva = 'Ahoj';

Může se to zdát kratší, ale nedoporučujeme to. Pro účely lepší čitelnosti raději uvádějte každou proměnnou na novém řádku.

Víceřádková varianta je trochu delší, ale snadněji se čte:

let uživatel = 'Jan';
let věk = 25;
let zpráva = 'Ahoj';

Někteří lidé definují více proměnných i tímto víceřádkovým stylem:

let uživatel = 'Jan',
  věk = 25,
  zpráva = 'Ahoj';

…Nebo dokonce tímto stylem „čárka napřed“:

let uživatel = 'Jan'
  , věk = 25
  , zpráva = 'Ahoj';

Technicky všechny tyto varianty dělají totéž, takže je to jen otázkou osobního vkusu a estetiky.

var namísto let

Ve starších skriptech můžete najít i jiné klíčové slovo: var namísto let:

var zpráva = 'Ahoj';

Klíčové slovo var znamená skoro totéž jako let. Rovněž deklaruje proměnnou, ale trochu jiným, „staroškolským“ způsobem.

Mezi let a var existují drobné rozdíly, ale ty nás zatím nezajímají. Podrobně je probereme v kapitole Starý příkaz „var“.

Analogie s reálným životem

Koncept „proměnné“ můžeme snadno pochopit, když si ji představíme jako „krabičku“ na data, na níž je nalepen štítek s unikátním názvem.

Například proměnnou zpráva si můžeme představit jako krabičku se štítkem "zpráva", v níž je hodnota "Ahoj!":

Do krabičky můžeme uložit libovolnou hodnotu.

Můžeme ji také změnit tolikrát, kolikrát chceme:

let zpráva;

zpráva = 'Ahoj!';

zpráva = 'Světe!'; // hodnota se změní

alert(zpráva);

Když se hodnota změní, stará data jsou z proměnné odstraněna:

Můžeme také deklarovat dvě proměnné a zkopírovat data z jedné do druhé.

let ahoj = 'Ahoj světe!';

let zpráva;

// zkopírujeme 'Ahoj světe!' z proměnné ahoj do proměnné zpráva
zpráva = ahoj;

// nyní obě proměnné obsahují stejná data
alert(ahoj); // Ahoj světe!
alert(zpráva); // Ahoj světe!
Dvojí deklarace způsobí chybu

Stejná proměnná může být deklarována pouze jednou.

Opakovaná deklarace stejné proměnné ohlásí chybu:

let zpráva = "Toto";

// opakované 'let' vede k chybě
let zpráva = "Tamto"; // Syntaktická chyba: 'zpráva' již byla deklarována

Proměnnou bychom tedy měli deklarovat jen jednou a pak se na ni odkazovat bez použití let.

Funkcionální jazyky

Stojí za zmínku, že existují tzv. čistě funkcionální programovací jazyky, například Haskell, které nedovolují měnit hodnotu proměnných.

Když je v takových jazycích hodnota jednou uložena „do krabičky“, zůstane tam navždy. Pokud chceme uložit něco jiného, jazyk nás přinutí vytvořit novou krabičku (deklarovat novou proměnnou). Nemůžeme znovu použít starou.

Ačkoli to na první pohled může vypadat trochu zvláštně, i v takových jazycích je seriózní programování docela dobře možné. Kromě toho existují oblasti, např. paralelní výpočty, v nichž právě toto omezení přináší určité výhody.

Názvy proměnných

V JavaScriptu platí pro názvy proměnných dvě omezení:

  1. Název musí obsahovat pouze písmena, číslice nebo symboly $ a _.
  2. První znak nesmí být číslice.

Příklady platných názvů:

let uživatelskéJméno;
let test123;

Když název obsahuje více slov, obvykle se používá tzv. velbloudí notace. To znamená, že slova následují hned za sebou a každé kromě prvního začíná velkým písmenem: můjVelmiDlouhýNázev.

Zajímavé je, že v názvech je možné používat i znak dolaru '$' a podtržítko '_'. Jsou to obyčejné symboly bez zvláštního významu, podobně jako písmena.

Tyto názvy jsou platné:

let $ = 1; // deklarujeme proměnnou s názvem "$"
let _ = 2; // a nyní proměnnou s názvem "_"

alert($ + _); // 3

Příklady nesprávných názvů proměnných:

let 1a; // nesmí začínat číslicí

let moje-jméno; // spojovník '-' není v názvu povolen
Na velikosti záleží

Proměnné s názvy jablko a JABLKO jsou dvě různé proměnné.

Nelatinská písmena jsou povolena, ale nedoporučují se

Je dovoleno použít písmena z jakéhokoli jazyka, včetně písmen z kyrilice, čínských znaků a podobně, třeba takto:

let имя = '...';
let 我 = '...';

Technicky zde není žádná chyba. Takové názvy jsou povoleny, ale podle mezinárodní konvence se v názvech proměnných používá angličtina. I když píšeme malý skript, může mít před sebou dlouhý život a lidé z jiných zemí si ho možná někdy budou potřebovat přečíst.

Rezervované názvy

Existuje seznam rezervovaných slov, které nemůžeme používat jako názvy proměnných, protože je již používá samotný jazyk.

Například: let, class, return, function jsou rezervované.

Níže uvedený kód ohlásí syntaktickou chybu:

let let = 5; // proměnnou nelze pojmenovat "let", chyba!
let return = 5; // nelze ji ani pojmenovat "return", chyba!
Přiřazení bez use strict

Obvykle musíme proměnnou před použitím definovat. Ve starých časech však bylo technicky možné vytvořit proměnnou pouze přiřazením hodnoty bez použití let. Aby byla zaručena kompatibilita se starými skripty, funguje to dodnes, pokud v našich skriptech neuvedeme use strict.

// poznámka: v tomto příkladu není "use strict"

čslo = 5; // pokud proměnná "čslo" ještě neexistuje, je vytvořena

alert(čslo); // 5

Je to špatný zvyk a ve striktním režimu vyvolá chybu:

"use strict";

čslo = 5; // chyba: proměnná čslo není definována

Konstanty

Chceme-li deklarovat konstantní (neměnící se) proměnnou, použijeme const místo let:

const mojeDatumNarození = '18.04.1982';

Proměnné deklarované pomocí const se nazývají „konstanty“ a není možné jim přiřadit jinou hodnotu. Pokus o to by ohlásil chybu:

const mojeDatumNarození = '18.04.1982';

mojeDatumNarození = '01.01.2001'; // chyba, nelze změnit konstantu!

Když má programátor jistotu, že hodnota proměnné se nikdy nezmění, může ji deklarovat pomocí const, aby tuto skutečnost pojistil a všem jasně sdělil.

Konstanty velkými písmeny

Je široce rozšířenou praktikou používat konstanty jako názvy obtížně zapamatovatelných hodnot, které jsou známy ještě před spuštěním programu.

Názvy takových konstant se uvádějí velkými písmeny a s podtržítky.

Například vytvoříme konstanty pro barvy v tzv. „webovém“ (hexadecimálním) formátu:

const BARVA_ČERVENÁ = "#F00";
const BARVA_ZELENÁ = "#0F0";
const BARVA_MODRÁ = "#00F";
const BARVA_ORANŽOVÁ = "#FF7F00";

// ...když si máme zvolit barvu
let barva = BARVA_ORANŽOVÁ;
alert(barva); // #FF7F00

Výhody:

  • BARVA_ORANŽOVÁ se pamatuje mnohem lépe než "#FF7F00".
  • Je mnohem snadnější špatně napsat "#FF7F00" než BARVA_ORANŽOVÁ.
  • Při čtení kódu dává BARVA_ORANŽOVÁ mnohem větší smysl než #FF7F00.

Kdy bychom měli používat pro konstantu velká písmena a kdy bychom ji měli pojmenovat obvyklým způsobem? Ujasníme si to.

Být „konstanta“ znamená prostě to, že hodnota proměnné se nikdy nezmění. Některé konstanty jsou však známy již před spuštěním programu (například hexadecimální hodnota červené barvy) a pak jsou konstanty, které se vypočítají až za běhu programu, ale jejich vypočtená hodnota se nikdy nezmění.

Příklad:

const dobaNačítáníStránky = /* doba, kterou trvá načíst webovou stránku */;

Hodnota proměnné dobaNačítáníStránky není známa dříve, než se stránka načte, proto je pojmenována obvyklým způsobem. Je to však konstanta, protože se po přiřazení již nezmění.

Jinými slovy, názvy konstant zapsané velkými písmeny se používají jen pro pojmenování „natvrdo uvedených“ hodnot.

Pojmenovávejte věci správně

Když už mluvíme o proměnných, je tady jedna velice důležitá věc.

Název proměnné by měl mít jasný a jednoznačný význam a měl by popisovat data, která jsou v proměnné uložena.

Pojmenovávání proměnných je jednou z nejdůležitějších a nejsložitějších dovedností v programování. Rychlý pohled na názvy proměnných nám může prozradit, zda kód psal začátečník nebo zkušený vývojář.

V reálných projektech většinu času nezabere psaní něčeho úplně nového od základů, ale úprava a rozšiřování již existujícího kódu. Když se vrátíme k nějakému kódu poté, co jsme nějakou dobu dělali něco jiného, je mnohem jednodušší najít potřebné informace, když jsou vhodně pojmenovány. Nebo, jinými slovy, když proměnné mají vhodné názvy.

Než deklarujete proměnnou, dobře si promyslete její název. Bohatě se vám to vyplatí.

Některá pravidla, která je vhodné dodržovat, jsou:

  • Používejte názvy čitelné člověkem, například uživatelskéJméno nebo nákupníVozík.
  • Zdržte se zkratek nebo krátkých názvů typu a, b, c, leda že byste opravdu dobře věděli, co děláte.
  • Volte názvy co nejpopisnější a nejstručnější. Příklady špatných názvů jsou data nebo hodnota. Takové názvy nic neříkají. Je vhodné je používat jen tehdy, když je z kontextu kódu naprosto zřejmé, jaká data nebo hodnota se v proměnné nachází.
  • Dohodněte se na pojmech se svým týmem a promyslete si je. Jestliže se návštěvník stránky nazývá „uživatel“, pak byste příslušné proměnné měli pojmenovat aktuálníUživatel nebo novýUživatel, a ne aktuálníNávštěvník nebo novýPánVeMěstě.

Zní to jednoduše? Bezpochyby ano, ale vytvářet popisné a stručné názvy proměnných v praxi jednoduché není.

Vytvořit novou nebo použít starou?

A jedna poznámka na závěr. Existují líní programátoři, kteří místo deklarace nové proměnné mají sklon znovu použít starou.

Výsledkem je, že jejich proměnné připomínají krabičky, do nichž lidé dávají různé věci, aniž by se obtěžovali změnit štítek. Co je právě teď v krabičce? Kdo ví? Musíme přijít blíž a podívat se.

Takoví programátoři ušetří trochu času deklarací proměnné, ale desetkrát víc času ztratí při ladění.

Proměnná navíc je dobro, ne zlo.

Moderní JavaScriptové minifikátory a prohlížeče dokáží kód dostatečně dobře optimalizovat, takže nenastane problém s výkonem. Používání různých proměnných pro různé hodnoty motoru dokonce pomůže optimalizovat váš kód.

Shrnutí

Deklarovat proměnné pro ukládání dat můžeme pomocí klíčových slov var, let nebo const.

  • let – je moderní deklarace proměnné.
  • var – je deklarace proměnné ze staré školy. Obvykle ji vůbec nepoužíváme, ale v kapitole Starý příkaz „var“ probereme drobné rozdíly oproti let pro případ, že byste je potřebovali znát.
  • const – je jako let, ale hodnota proměnné se nesmí měnit.

Proměnné by měly být pojmenovány tak, abychom snadno pochopili, co obsahují.

Úlohy

důležitost: 2
  1. Deklarujte dvě proměnné: správce a jméno.
  2. Přiřaďte do proměnné jméno hodnotu "Jan".
  3. Zkopírujte hodnotu z proměnné jméno do proměnné správce.
  4. Zobrazte hodnotu proměnné správce pomocí alert (musí vypsat „Jan“).

V níže uvedeném kódu každý řádek odpovídá jednomu bodu v zadání.

let správce, jméno; // můžeme deklarovat dvě proměnné najednou

jméno = "Jan";

správce = jméno;

alert( správce ); // "Jan"
důležitost: 3
  1. Vytvořte proměnnou s názvem naší planety. Jak byste takovou proměnnou pojmenovali?
  2. Vytvořte proměnnou, v níž bude uloženo jméno aktuálního návštěvníka webové stránky. Jak byste takovou proměnnou pojmenovali?

Proměnná pro naši planetu

To je jednoduché:

let jménoNašíPlanety = "Země";

Všimněte si, že bychom mohli použít kratší název planeta, ale pak by nemuselo být zřejmé, na kterou planetu se odkazuje. Je vhodné být výřečnější, aspoň dokud název proměnné neníPřílišDlouhý.

Jméno aktuálního návštěvníka

let jménoAktuálníhoUživatele = "Jan";

Opět bychom to mohli zkrátit na jménoUživatele, pokud máme jistotu, že jde o aktuálního uživatele.

V moderních editorech se dlouhé názvy proměnných snadno píší díky funkci automatického doplňování. Nešetřete na nich. Tříslovný název je zcela v pořádku.

A pokud váš editor neumí automatické doplňování, pořiďte si nový.

důležitost: 4

Prohlédněte si následující kód:

const datumNarození = '18.04.1982';

const věk = nějakýKód(datumNarození);

Zde máme konstantu datumNarození a také konstantu věk.

Konstanta věk se vypočítá z konstanty datumNarození pomocí nějakýKód(), což znamená volání funkce, které jsme zatím nevysvětlili (ale brzy tak učiníme!), ale na podrobnostech zde nezáleží, podstatné je, že věk se vypočítá nějak podle datumNarození.

Bylo by správné použít pro název proměnné datumNarození velká písmena? A pro věk? Nebo dokonce pro obě?

const DATUM_NAROZENÍ = '18.04.1982'; // napsat DATUM_NAROZENÍ velkými písmeny?

const VĚK = nějakýKód(DATUM_NAROZENÍ); // napsat VĚK velkými písmeny?

Obecně používáme velká písmena pro konstanty, které jsou „zakódovány natvrdo“. Jinými slovy, když je jejich hodnota známa ještě před spuštěním programu a je přímo uvedena v kódu.

V tomto kódu je to přesně případ proměnné datumNarození. Pro ni bychom tedy mohli použít velká písmena.

Naproti tomu věk se počítá až při běhu programu. Dnes máme jeden věk, za rok budeme mít jiný. Je to konstanta v tom smyslu, že se její hodnota nezmění při provádění kódu, ale je „trochu méně konstantní“ než datumNarození: její hodnota je vypočítávána, takže pro ni bychom měli nechat malá písmena.

Mapa tutoriálu

Komentáře

přečtěte si před komentováním…
  • Máte-li návrhy na zlepšení, vytvořte prosím issue na GitHubu nebo pull request místo komentáře.
  • Pokud v článku něčemu nerozumíte, napište prosím, čemu přesně a na kterém místě.
  • Pro vložení několika slov kódu použijte značku <code>, pro několik řádků je obalte značkou <pre>, pro více než 10 řádků vložte odkaz na pískoviště (plnkr, jsbin, codepen…)