Sobes.tech
Junior

Auf welche Weisen können Variablen in JavaScript deklariert werden? Nennen Sie die Unterschiede zwischen diesen Methoden.

sobes.tech KI

Antwort von AI

In JavaScript können Variablen auf drei Arten deklariert werden: var, let, const.

Unterschiede zwischen ihnen:

Unterschied var let const
Gültigkeitsbereich Funktionaler Bereich Blockbereich Blockbereich
Neu deklarieren Möglich Möglich Nicht möglich
Neu zuweisen Möglich Möglich Nicht möglich
Hoisting Hebt die Deklaration und Initialisierung auf undefined Hebt die Deklaration, aber nicht die Initialisierung auf Hebt die Deklaration, aber nicht die Initialisierung auf

Beispiele:

// var
function beispielVar() {
  var x = 10; // Funktionaler Bereich
  if (true) {
    var x = 20; // Neu deklarieren innerhalb derselben Funktion möglich
    console.log(x); // 20
  }
  console.log(x); // 20 (die Variable x aus dem if ist hier zugänglich)
}

console.log(x); // Fehler: ReferenceError: x ist nicht definiert (x ist außerhalb der Funktion nicht sichtbar)

// Hoisting mit var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function beispielLet() {
  let y = 10; // Blockbereich
  if (true) {
    let y = 20; // Neu deklarieren im selben Block nicht möglich
    console.log(y); // 20 (andere Variable y)
  }
  console.log(y); // 10 (Variable y außerhalb des Blocks)
}

console.log(y); // Fehler: ReferenceError: y ist nicht definiert

// Hoisting mit let
// console.log(b); // Fehler: ReferenceError: Zugriff auf 'b' vor Initialisierung nicht möglich
let b = 5;
console.log(b); // 5
// const
function beispielConst() {
  const z = 10; // Blockbereich
  // z = 20; // Fehler: TypeError: Zuweisung an Konstante. (Neu zuweisen nicht möglich)
  if (true) {
    const z = 20; // Neu deklarieren im selben Block nicht möglich
    console.log(z); // 20 (andere Variable z)
  }
  console.log(z); // 10 (Variable z außerhalb des Blocks)
}

console.log(z); // Fehler: ReferenceError: z ist nicht definiert

// Hoisting mit const
// console.log(c); // Fehler: ReferenceError: Zugriff auf 'c' vor Initialisierung nicht möglich
const c = 5;
console.log(c); // 5

// Für Objekte und Arrays, die mit const deklariert wurden, kann der Inhalt geändert werden
const obj = { name: 'Test' };
obj.name = 'Neuer Test'; // Erlaubt
// obj = { name: 'Anderer Test' }; // Fehler