Junior
Jakými způsoby lze v JavaScriptu deklarovat proměnné? Uveďte rozdíly mezi těmito způsoby.
sobes.tech AI
Odpověď od AI
V JavaScriptu lze proměnné deklarovat třemi způsoby: var, let, const.
Rozdíly mezi nimi:
| Rozdíl | var |
let |
const |
|---|---|---|---|
| Rozsah platnosti | Funkční | Blokový | Blokový |
| Překrývání | Je možné | Je možné | Není možné |
| Přepisování | Je možné | Je možné | Není možné |
| Hoisting | Zvedá deklaraci a inicializaci na undefined |
Zvedá deklaraci, ale ne inicializaci | Zvedá deklaraci, ale ne inicializaci |
Příklady:
// var
function exampleVar() {
var x = 10; // Funkční rozsah platnosti
if (true) {
var x = 20; // Překrývání je možné uvnitř téže funkce
console.log(x); // 20
}
console.log(x); // 20 (proměnná x z if je dostupná zde)
}
console.log(x); // Chyba: ReferenceError: x není definováno (x není viditelná mimo funkci)
// Hoisting var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function exampleLet() {
let y = 10; // Blokový rozsah platnosti
if (true) {
let y = 20; // Překrývání není možné uvnitř stejného bloku
console.log(y); // 20 (jiná proměnná y)
}
console.log(y); // 10 (proměnná y mimo blok)
}
console.log(y); // Chyba: ReferenceError: y není definováno
// Hoisting let
// console.log(b); // Chyba: ReferenceError: Nelze přistoupit k 'b' před inicializací
let b = 5;
console.log(b); // 5
// const
function exampleConst() {
const z = 10; // Blokový rozsah platnosti
// z = 20; // Chyba: TypeError: Přiřazení do konstantní proměnné. (Přepsání není možné)
if (true) {
const z = 20; // Překrývání není možné uvnitř stejného bloku
console.log(z); // 20 (jiná proměnná z)
}
console.log(z); // 10 (proměnná z mimo blok)
}
console.log(z); // Chyba: ReferenceError: z není definováno
// Hoisting const
// console.log(c); // Chyba: ReferenceError: Nelze přistoupit k 'c' před inicializací
const c = 5;
console.log(c); // 5
// U objektů a polí deklarovaných přes const lze měnit obsah
const obj = { jméno: 'Test' };
obj.jméno = 'Nový Test'; // Povolené
// obj = { jméno: 'Další Test' }; // Chyba