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