Bereik van variabelen in if-else in JavaScript

Laten we voor de eenvoud uitgaan van een voorwaarde die altijd waar is:

javascriptif (true) {
  
}

Laten we de volgende code bekijken:

javascriptif (true) {
  let res = '!';
}

console.log(res);

Zoals je ziet, zou de waarde '!' in de variabele res moeten worden opgeslagen. Als je deze code echter uitvoert, verschijnt er een foutmelding in de console!

Het punt is dat variabelen die binnen de accolades worden gedeclareerd, alleen binnen die accolades zichtbaar zijn, en niet van buitenaf. Wetenschappelijk gezegd hebben we het hier over het bereik van variabelen.

We kunnen zeggen dat het bereik van variabelen die binnen accolades worden gedeclareerd, alleen die accolades zijn. Als een variabele echter buiten de accolades is gedeclareerd, dan is deze zowel binnen als buiten zichtbaar:

javascriptlet res; // variabele gedeclareerd buiten

if (true) {
  res = '!';
}

console.log(res); // geeft '!' weer

In het volgende voorbeeld wordt in de variabele res afhankelijk van de voorwaarde ofwel de waarde 1, of de waarde 2 opgeslagen:

javascriptlet num = 5;

if (num >= 0) {
  let res = 1;
} else {
  let res = 2;
}

console.log(res);

Als je deze code echter uitvoert, verschijnt er een foutmelding in de console. Zoals je nu begrijpt, komt dit allemaal door de zichtbaarheid van variabelen. Om het probleem op te lossen, declareren we de variabele buiten de voorwaarde:

javascriptlet test = true;
let res; // declareer de variabele buiten de voorwaarde

if (test) {
  res = 1;
} else {
  res = 2;
}

console.log(res); // geeft 1 weer
Задание 1

De auteur van de onderstaande code wilde een leeftijdscontrole uitvoeren op het bereiken van 18 jaar. De code werkt echter niet. Verbeter de fout van de auteur van de code. Hier is de problematische code:

javascriptlet age = 17;

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

console.log(adult);