Domeniul de vizibilitate al variabilelor în if-else în JavaScript

Fie pentru simplitate o condiție care se execută întotdeauna:

javascriptif (true) {
  
}

Să analizăm următorul cod:

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

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

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

javascriptlet 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
Задание 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:

javascriptlet age = 17;

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

console.log(adult);