Zakres zmiennych w if-else w JavaScript
Dla uproszczenia załóżmy, że mamy zawsze spełniony warunek:
if (true) {
}
Przyjrzyjmy się następującemu kodowi:
if (true) {
let res = '!';
}
console.log(res);
Jak widzisz, do zmiennej res
powinna zostać zapisana wartość '!'. Jednakże,
jeśli uruchomimy ten kod, w konsoli pojawi się
błąd!
Chodzi o to, że zmienne zadeklarowane wewnątrz nawiasów klamrowych są widoczne tylko wewnątrz tych nawiasów i nie są widoczne na zewnątrz. Mówiąc naukowo, chodzi tutaj o zakres widoczności zmiennych.
Można powiedzieć, że zakresem widoczności zmiennych zadeklarowanych wewnątrz nawiasów klamrowych są tylko te nawiasy klamrowe. Jednakże, jeśli zmienna jest zadeklarowana na zewnątrz nawiasów klamrowych, to jest widoczna zarówno wewnątrz nich, jak i na zewnątrz:
let res; // zmienna zadeklarowana na zewnątrz
if (true) {
res = '!';
}
console.log(res); // wypisze '!'
W następnym przykładzie do zmiennej res
w zależności od warunku zapisywana jest albo
wartość 1, albo wartość 2:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Jednakże, jeśli uruchomimy ten kod, to w konsoli pojawi się błąd. Jak już teraz rozumiesz, winny jest zakres widoczności zmiennych. Aby rozwiązać problem, zadeklarujmy zmienną na zewnątrz warunku:
let test = true;
let res; // deklarujemy zmienną na zewnątrz warunku
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // wypisze 1
Autor poniższego kodu chciał wykonać
sprawdzenie wieku na osiągnięcie 18
lat. Kod jednak nie działa. Popraw
błąd autora kodu. Oto problematyczny kod:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);