Junior
Milyen módon lehet változókat deklarálni JavaScriptben? Nevezze meg ezek közötti különbségeket.
sobes.tech MI
Válasz az MI-től
JavaScript-ben a változókat három módon lehet bejelenteni: var, let, const.
Különbségek közöttük:
| Különbség | var |
let |
const |
|---|---|---|---|
| Hatókör | Funkcionális | Blokk | Blokk |
| Újra deklarálható | Lehetséges | Lehetséges | Nem lehetséges |
| Újra hozzárendelhető | Lehetséges | Lehetséges | Nem lehetséges |
| Hoisting | Emeli a deklarációt és az inicializálást undefined-re |
Emeli a deklarációt, de nem az inicializálást | Emeli a deklarációt, de nem az inicializálást |
Példák:
// var
function példaVar() {
var x = 10; // Funkcionális hatókör
if (true) {
var x = 20; // Újra deklarálható ugyanabban a funkcióban
console.log(x); // 20
}
console.log(x); // 20 (az if-ből származó x elérhető itt)
}
console.log(x); // Hiba: ReferenceError: x nincs definiálva (x nem látható a funkción kívül)
// Hoisting a var-rel
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function példaLet() {
let y = 10; // Blokk hatókör
if (true) {
let y = 20; // Ugyanabban a blokkban nem újra deklarálható
console.log(y); // 20 (más y)
}
console.log(y); // 10 (a blokk küli y)
}
console.log(y); // Hiba: ReferenceError: y nincs definiálva
// Hoisting a let-vel
// console.log(b); // Hiba: ReferenceError: nem lehet hozzáférni a 'b'-hez a inicializálás előtt
let b = 5;
console.log(b); // 5
// const
function példaConst() {
const z = 10; // Blokk hatókör
// z = 20; // Hiba: TypeError: Átadás állandó változónak. (Nem lehet újra hozzárendelni)
if (true) {
const z = 20; // Ugyanabban a blokkban nem újra deklarálható
console.log(z); // 20 (más z)
}
console.log(z); // 10 (a blokk küli z)
}
console.log(z); // Hiba: ReferenceError: z nincs definiálva
// Hoisting a const-vel
// console.log(c); // Hiba: ReferenceError: nem lehet hozzáférni a 'c'-hez a inicializálás előtt
const c = 5;
console.log(c); // 5
// Az állandóként deklarált objektumok és tömbök tartalma módosítható
const obj = { name: 'Test' };
obj.name = 'Új Test'; // Megengedett
// obj = { name: 'Másik Test' }; // Hiba