Junior
Akými spôsobmi je možné deklarovať premenné v JavaScripte? Uveďte rozdiely medzi týmito spôsobmi.
sobes.tech AI
Odpoveď od AI
V JavaScripte môžete deklarovať premenné tromi spôsobmi: var, let, const.
Rozdiely medzi nimi:
| Rozdiel | var |
let |
const |
|---|---|---|---|
| Rozsah platnosti | Funkčný | Blokový | Blokový |
| Prepisovanie | Je možné | Je možné | Nie je možné |
| Hoisting | Zdvihá deklaráciu a inicializáciu na undefined |
Zdvihá deklaráciu, ale nie inicializáciu | Zdvihá deklaráciu, ale nie inicializáciu |
Príklady:
// var
function exampleVar() {
var x = 10; // Funkčný rozsah platnosti
if (true) {
var x = 20; // Prepisovanie je možné v rámci tej istej funkcie
console.log(x); // 20
}
console.log(x); // 20 (premenná x z if je dostupná tu)
}
console.log(x); // Chyba: ReferenceError: x nie je definovaná (x nie je viditeľná mimo funkcie)
// 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; // Prepisovanie nie je možné v rámci toho istého bloku
console.log(y); // 20 (iná premená y)
}
console.log(y); // 10 (premenná y mimo bloku)
}
console.log(y); // Chyba: ReferenceError: y nie je definovaná
// Hoisting let
// console.log(b); // Chyba: ReferenceError: Nie je možné pristúpiť k 'b' pred inicializáciou
let b = 5;
console.log(b); // 5
// const
function exampleConst() {
const z = 10; // Blokový rozsah platnosti
// z = 20; // Chyba: TypeError: Priradenie ku konštantnej premennej. (Prepisovanie nie je možné)
if (true) {
const z = 20; // Prepisovanie nie je možné v rámci toho istého bloku
console.log(z); // 20 (iná premená z)
}
console.log(z); // 10 (premenná z mimo bloku)
}
console.log(z); // Chyba: ReferenceError: z nie je definovaná
// Hoisting const
// console.log(c); // Chyba: ReferenceError: Nie je možné pristúpiť k 'c' pred inicializáciou
const c = 5;
console.log(c); // 5
// Pre objekty a polia deklarované cez const je možné meniť obsah
const obj = { meno: 'Test' };
obj.meno = 'Nový Test'; // Povolené
// obj = { meno: 'Iný Test' }; // Chyba