Junior
Op welke manieren kunnen variabelen in JavaScript worden gedeclareerd? Noem de verschillen tussen deze methoden.
sobes.tech AI
Antwoord van AI
In JavaScript kunnen variabelen op drie manieren worden gedeclareerd: var, let, const.
Verschillen tussen hen:
| Verschil | var |
let |
const |
|---|---|---|---|
| Scope | Functioneel | Blok | Blok |
| Herdeclaratie | Mogelijk | Mogelijk | Onmogelijk |
| Hergebruik | Mogelijk | Mogelijk | Onmogelijk |
| Hoisting | Verhoogt de declaratie en initialisatie naar undefined |
Verhoogt de declaratie, maar niet de initialisatie | Verhoogt de declaratie, maar niet de initialisatie |
Voorbeelden:
// var
function voorbeeldVar() {
var x = 10; // Functioneel bereik
if (true) {
var x = 20; // Herdeclaratie mogelijk binnen dezelfde functie
console.log(x); // 20
}
console.log(x); // 20 (de variabele x uit de if is hier toegankelijk)
}
console.log(x); // Fout: ReferenceError: x is niet gedefinieerd (x is niet zichtbaar buiten de functie)
// Hoisting met var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function voorbeeldLet() {
let y = 10; // Blok scope
if (true) {
let y = 20; // Herdeclaratie niet mogelijk binnen dezelfde blok
console.log(y); // 20 (andere y variabele)
}
console.log(y); // 10 (variabele y buiten het blok)
}
console.log(y); // Fout: ReferenceError: y is niet gedefinieerd
// Hoisting met let
// console.log(b); // Fout: ReferenceError: Kan niet bij 'b' voordat het geïnitialiseerd is
let b = 5;
console.log(b); // 5
// const
function voorbeeldConst() {
const z = 10; // Blok scope
// z = 20; // Fout: TypeError: Toewijzing aan constante variabele. (Her toewijzing niet mogelijk)
if (true) {
const z = 20; // Herdeclaratie niet mogelijk binnen dezelfde blok
console.log(z); // 20 (andere z variabele)
}
console.log(z); // 10 (variabele z buiten het blok)
}
console.log(z); // Fout: ReferenceError: z is niet gedefinieerd
// Hoisting met const
// console.log(c); // Fout: ReferenceError: Kan niet bij 'c' voordat het geïnitialiseerd is
const c = 5;
console.log(c); // 5
// Voor objecten en arrays die met const zijn gedeclareerd, kan de inhoud worden gewijzigd
const obj = { name: 'Test' };
obj.name = 'Nieuw Test'; // Toegestaan
// obj = { name: 'Andere Test' }; // Fout