Domeniul de vizibilitate al variabilelor în if-else în JavaScript
Fie pentru simplitate o condiție care se execută întotdeauna:
if (true) {
}
Să analizăm următorul cod:
if (true) {
let res = '!';
}
console.log(res);
După cum vedeți, în variabila res
ar trebui să se înregistreze valoarea '!'. Totuși,
dacă rulezi acest cod, în consolă va apărea
o eroare!
Faptul este că variabilele declarate în interiorul acoladelor sunt vizibile doar în interiorul acestor acolade și nu sunt vizibile în exterior. În termeni științifici vorbim aici despre domeniul de vizibilitate al variabilelor.
Se poate spune că domeniul de vizibilitate al variabilelor declarate în interiorul acoladelor este limitat doar la aceste acolade. Totuși, dacă o variabilă este declarată în afara acoladelor, atunci este vizibilă atât în interiorul lor, cât și în exterior:
let res; // variabila este declarată în exterior
if (true) {
res = '!';
}
console.log(res); // va afișa '!'
În următorul exemplu, în variabila res
în funcție de condiție se înregistrează fie
valoarea 1, fie valoarea 2:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Totuși, dacă rulezi acest cod, în consolă va apărea o eroare. După cum acum înțelegeți deja, totul este legat de vizibilitatea variabilelor. Pentru a rezolva problema, să declarăm variabila în afara condiției:
let test = true;
let res; // declarăm variabila în afara condiției
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // va afișa 1
Autorul codului de mai jos a vrut să efectueze
verificarea vârstei pentru atingerea a 18
ani. Codul, totuși, nu funcționează. Corectați
eroarea autorului codului. Iată codul problematic:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);