Nuancen des Geltungsbereichs von Variablen in if-else-Konstrukten in JavaScript
Der Geltungsbereich von Variablen weist eine gewisse
Nuance auf. Lassen Sie uns diese an einem Beispiel betrachten.
Lassen Sie uns außerhalb unserer Bedingung eine Variable
res mit einem Wert deklarieren und innerhalb
der Bedingung diesen Wert auf einen anderen ändern:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // gibt 2 aus
Wie Sie sehen, hat sich die Variable res
innerhalb der Bedingung geändert.
Alles ändert sich jedoch,
wenn innerhalb der Bedingung die Variable
res auch via let deklariert wird:
let res = 1;
if (true) {
let res = 2; // Variable via let deklarieren
}
console.log(res); // gibt 1 aus, nicht 2!
Hier liegt es daran, dass die Deklaration der Variable
via let innerhalb der Bedingung eine lokale
Variable res erzeugt hat.
Das heißt, innerhalb der Bedingung existiert eine Variable
res, und außerhalb der Bedingung - eine andere.
Man kann sich davon überzeugen, indem man den Wert der Variable
in der Konsole innerhalb der Bedingung ausgibt:
let res = 1;
if (true) {
let res = 2;
console.log(res); // gibt 2 aus
}
console.log(res); // gibt 1 aus
Der Autor des unten angeführten Codes wollte eine
Altersprüfung auf das Erreichen von 18
Jahren durchführen. Der Code gibt jedoch bei jedem Wert des Alters
den Wert undefined in der Konsole aus.
Korrigieren Sie den Fehler des Autors des Codes. Hier ist der problematische Code:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Der Autor des unten angeführten Codes wollte eine
Altersprüfung auf das Erreichen von 18
Jahren durchführen. Nach der Überprüfung des Codes stellte sich heraus, dass wenn
das Alter gleich oder größer 18 Jahren ist, dann
wird in die Variable adult true geschrieben,
wie es sein soll, jedoch, wenn das Alter kleiner als
18 ist, dann hat die Variable adult den
Wert undefined. Korrigieren Sie den Fehler
des Autors des Codes.
Hier ist der problematische Code:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Der Autor des unten angeführten Codes wollte eine
Altersprüfung durchführen. Der Code gibt jedoch bei jedem
Wert des Alters den Wert undefined in der Konsole aus.
Korrigieren Sie den Fehler des Autors des Codes.
Hier ist der problematische Code:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = 'von 18 bis 23';
} else {
let res = 'älter als 23';
}
} else {
let res = 'jünger als 18';
}
console.log(res);
Der Autor des unten angeführten Codes wollte eine
Altersprüfung durchführen. Der Code gibt jedoch bei einem
Alter größer als 18 Jahren den Wert undefined in der
Konsole aus. Korrigieren Sie den Fehler des Autors des Codes.
Hier ist der problematische Code:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = 'von 18 bis 23';
} else {
res = 'älter als 23';
}
} else {
res = 'jünger als 18';
}
console.log(res);