Nuanțe ale domeniului de aplicare al variabilelor în construcțiile if-else în JavaScript
Domeniul de aplicare al variabilelor are un anumit
nuantă. Să o analizăm cu un exemplu.
Să declarăm în afara condiției noastre o variabilă
res cu o valoare, iar în interiorul
condiției să schimbăm acea valoare cu alta:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // va afișa 2
După cum vedeți, variabila res s-a schimbat
în interiorul condiției. Totuși, totul se va schimba,
dacă în interiorul condiției declarăm și variabila
res prin let:
let res = 1;
if (true) {
let res = 2; // declarăm variabila prin let
}
console.log(res); // va afișa 1, nu 2!
Aici, totul se datorează faptului că declararea variabilei
prin let în interiorul condiției a creat o variabilă
locală res.
Adică în interiorul condiției există o variabilă
res, iar în afara condiției - alta.
Putem verifica acest lucru, afișând valoarea variabilei
în consolă în interiorul condiției:
let res = 1;
if (true) {
let res = 2;
console.log(res); // va afișa 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. Totuși, codul, la orice valoare a vârstei,
afișează în consolă valoarea undefined.
Corectați eroarea autorului codului. Iată codul problematic:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Autorul codului de mai jos a vrut să efectueze
verificarea vârstei pentru atingerea a 18
ani. După verificarea codului, s-a dovedit că dacă
vârsta este egală sau mai mare de 18 ani, atunci
în variabila adult se scrie true,
așa cum ar trebui, totuși, dacă vârsta este mai mică
de 18, atunci variabila adult are
valoarea undefined. Corectați eroarea
autorului codului.
Iată codul problematic:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Autorul codului de mai jos a vrut să efectueze
verificarea vârstei. Totuși, codul, la orice
valoare a vârstei afișează în consolă valoarea
undefined. Corectați eroarea autorului codului.
Iată codul problematic:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = 'de la 18 la 23';
} else {
let res = 'mai mult de 23';
}
} else {
let res = 'mai puțin de 18';
}
console.log(res);
Autorul codului de mai jos a vrut să efectueze
verificarea vârstei. Totuși, codul, la o valoare
a vârstei mai mare de 18 ani afișează în
consolă valoarea undefined. Corectați
eroarea autorului codului.
Iată codul problematic:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = 'de la 18 la 23';
} else {
res = 'mai mult de 23';
}
} else {
res = 'mai puțin de 18';
}
console.log(res);