Ve vanilla JavaScriptu se proměnné deklarují pomocí klíčového slova ‚var
‚. V ES6 nyní můžete proměnné definovat také pomocí klíčových slov let
a const
. Všechna tři klíčová slova mají podobnou syntaxi pro deklaraci a inicializaci proměnných, ale liší se rozsahem a použitím. Pojďme se seznámit s rozdíly mezi těmito třemi klíčovými slovy.
klíčové slovo
‚var
‚ má tradiční syntaxi definice proměnných. Volitelně můžete proměnnou inicializovat hodnotou. pokud proměnnou v příkazu var
neinicializujete, bude jí automaticky přiřazena hodnota JavaScriptu undefined
.
1) Rozsah
2) Hoisting deklarací var
Upozorňujeme, že proměnné deklarované klíčovým slovem var
podléhají hoistingu. Hoisting znamená, že pokud deklarujeme proměnnou (deklarovanou, ale neinicializovanou) na konci funkce, runtime ji zvedne nahoru a my nebudeme mít žádnou chybu, pokud bychom tuto proměnnou použili před deklarací.
Přečtěte si více:
3) Pokud nepoužijete klíčové slovo ‚var‘
Pokud v JavaScriptu nepoužijete pro deklaraci proměnné klíčové slovo var
(implicitní deklarace), bude proměnná vytvořena v globálním oboru. např.
for(index=0; index< array.length; index++){//index is in global scope //code}
Výše uvedený for-cyklus vytvoří v globálním oboru proměnnou s názvem index
. Pokud by náhodou někdo jiný také používal globální proměnnou index
, pak jste právě přepsali jeho proměnnou.
Chcete-li se vyhnout tomu, aby proměnná získala globální rozsah, musíte v deklaraci proměnné použít klíčové slovo var
.
klíčové slovo
let
je velmi podobné klíčovému slovu var
– s větším omezením rozsahu.
klíčové slovo const
-
const
deklaruje proměnnou s blokovým rozsahem a konstantní hodnotou. Je to v podstatě deklarace proměnné s klíčovým slovem ‚var
‚, kde hodnota proměnné je konstantní a nelze ji měnit. -
const
dodržuje stejné principy rozsahu jako klíčové slovolet
. - pokud víte, že proměnná, kterou deklarujete, nemůže a neměla by mít povoleno nové přiřazení, pak ji deklarujte pomocí const, jinak použijte klíčové slovo let.
Syntaxe a použití
const PI = "3.14";PI = 12;//Uncaught TypeError: Assignment to constant variable.
.