Cookies

Na naší webové stránce používáme soubory cookies pro její správné fungování, přizpůsobení analytických dat a dynamiky obsahu pro uživatele. Více informací o cookies.

Potvrzením zároveň ukládáte souhlas se zpracováním osobních údajů v rámci nařízení GDPR.

Proměnná let vs. const

V čem je let lepším a v čem const?
Předchozí Následující

#1 Proměnná let vs. const

O proměnných jsme psali v předchozím článku, avšak v dnešní době se používají zejména tyto dvě – let a const. Na první pohled vypadají podobně, obě ukládají jak stringy, tak čísla, pole apod., avšak je mezi nimi zásadní rozdíl. Ten z nich dělá skvělou dvojku, se kterou si ve většině času vystačíte.

#2 Rozdíly

Rozdíly těchto dvou proměnných se dělí na dvě části:

Global a block scope

Global a block scope označují dva termíny používané v programovacích jazycích. Ty vysvětlují zda deklarace proměnné bude ovlivněna v celém kódu (global) nebo pouze v dané části kódu (block).

Proměnná var má global scope, to znamená, že pokud bude deklarována mimo blok a následně přepsána v bloku, její hodnota se změní v celém dokumentu. Například takto:

var x = 100;
console.log(x);
// Výstup je 100
{ // Blok
 var x = 50;
 console.log(x);
 // Výstup je 50
}
console.log(x);
// Výstup je 50

Proměnné let a const mají ale block scope. Znamená to, že pokud ji definujeme mimo blok a následně předefinujeme v bloku, její hodnota mimo blok bude pořád stejná a v bloku bude jiná = vnitřní hodnota (v bloku) nijak neovlivní vnější hodnotu.

let y = 100;
console.log(y);
// Výstup je 100
{ // Blok
 let y = 50;
 console.log(y);
 // Výstup je 50
}
console.log(y);
// Výstup je 100

Díky této vlastnosti jsou obě proměnné lépe použitelné – lze je lokálně „změnit“ bez toho, aby byly změněny lokálně.

Deklarace a přiřazení dat

Proměnná let musí být deklarována, nelze ji redeklarovat a nemusí při deklaraci obsahovat hodnotu – její hodnotu lze kdykoliv měnit. To, že ji nelze redeklarovat znamená, že tento kód fungovat nebude…

let x = 100;
let x = 200;
// Hodnota se nezmění

…ale tento ano…

let x = 100;
x = 200;
// Hodnota se změní

Zároveň lze proměnnou let nejdříve deklarovat a poté jí až naplnit.

let x;
x = 100;

U proměnné const je potřeba ji také deklarovat, také ji nelze redeklarovat, ale narozdíl od let je potřeba jí okamžitě přiřadit hodnotu a tu hodnotu již nelze měnit.

const a = 100;
a = 100;
// Hodnota se nezmění
Tip: Je lepší primárně používat const, a nejde-li použít const, použít let.

#3 Tabulka vlastností

Proměnná Global scope Block scope Redeklarace Přepsání hodnoty
var Ano Ne Ano Ne
let Ne Ano Ne Ano
const Ne Ano Ne Ne