Variablensichtbarkeit in if-else in JavaScript

Der Einfachheit halber nehmen wir eine Bedingung, die immer wahr ist:

javascriptif (true) {
  
}

Betrachten wir den folgenden Code:

javascriptif (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:

javascriptlet 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:

javascriptlet 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:

javascriptlet test = true;
let res; // Variable außerhalb der Bedingung deklarieren

if (test) {
  res = 1;
} else {
  res = 2;
}

console.log(res); // gibt 1 aus
Задание 1

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:

javascriptlet age = 17;

if (age >= 18) {
  let adult = true;
} else {
  let adult = false;
}

console.log(adult);