Variablensichtbarkeit in if-else in JavaScript
Der Einfachheit halber nehmen wir eine Bedingung, die immer wahr ist:
if (true) {
}
Betrachten wir den folgenden Code:
if (true) {
let res = '!';
}
console.log(res);
Wie Sie sehen, sollte in die Variable res
der Wert '!' geschrieben werden. Wenn Sie
diesen Code jedoch ausführen, erscheint ein
Fehler in der Konsole!
Der Grund liegt darin, dass Variablen, die innerhalb der geschweiften Klammern deklariert werden, nur innerhalb dieser Klammern sichtbar sind und außerhalb nicht. Wissenschaftlich gesprochen geht es hier um die Sichtbarkeit von Variablen.
Man kann sagen, dass der Sichtbarkeitsbereich von Variablen, die innerhalb geschweifter Klammern deklariert werden, nur diese geschweiften Klammern sind. Wenn eine Variable jedoch außerhalb der geschweiften Klammern deklariert wird, ist sie sowohl innerhalb als auch außerhalb sichtbar:
let res; // Variable wurde außen deklariert
if (true) {
res = '!';
}
console.log(res); // gibt '!' aus
Im folgenden Beispiel wird in die Variable res
je nach Bedingung entweder der Wert 1
oder der Wert 2 geschrieben:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Wenn Sie diesen Code jedoch ausführen, erscheint ein Fehler in der Konsole. Wie Sie nun verstehen, liegt es an der Sichtbarkeit der Variablen. Um das Problem zu lösen, deklarieren wir die Variable außerhalb der Bedingung:
let test = true;
let res; // Variable außerhalb der Bedingung deklarieren
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // gibt 1 aus
Der Autor des unten angegebenen Codes wollte
eine Altersprüfung auf Erreichen des 18.
Lebensjahrs durchführen. Der Code funktioniert
allerdings nicht. Korrigieren Sie den Fehler
des Code-Autors. Hier ist der problematische Code:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);