Opseg vidljivosti promenljivih u if-else u JavaScript-u
Neka radi jednostavnosti imamo uslov koji se uvek ispunjava:
if (true) {
}
Hajde da pogledamo sledeći kod:
if (true) {
let res = '!';
}
console.log(res);
Kao što vidite, u promenljivu res
bi trebalo da se upiše vrednost '!'. Međutim,
ako pokrenete ovaj kod, u konzolu će se ispisati
greška!
Stvar je u tome što su promenljive deklarisane unutar vitičastih zagrada vidljive samo unutar tih zagrada, a nisu vidljive spolja. Naučno rečeno, ovde se radi o opsegu vidljivosti promenljivih.
Može se reći da je opseg vidljivosti promenljivih deklarisanih unutar vitičastih zagrada samo te vitičaste zagrade. Međutim, ako je promenljiva deklarisana spolja od vitičastih zagrada, onda je vidljiva i unutar njih, i spolja:
let res; // promenljiva je deklarisana spolja
if (true) {
res = '!';
}
console.log(res); // ispisaće '!'
U sledećem primeru u promenljivu res
zavisno od uslova upisuje se ili
vrednost 1, ili vrednost 2:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Međutim, ako pokrenete ovaj kod, u konzolu će se ispisati greška. Kao što sada već razumete, ceo problem je u vidljivosti promenljivih. Da bismo rešili problem, deklarišimo promenljivu spolja od uslova:
let test = true;
let res; // deklarišimo promenljivu spolja od uslova
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // ispisaće 1
Autor koda datog ispod je želeo da izvrši
proveru da li je dostignuto 18
godina. Kod, međutim, ne radi. Ispravite
grešku autora koda. Eto problematičnog koda:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);