Sobes.tech
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