Bereik van variabelen in if-else in JavaScript
Laten we voor de eenvoud uitgaan van een voorwaarde die altijd waar is:
if (true) {
}
Laten we de volgende code bekijken:
if (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:
let 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:
let 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:
let test = true;
let res; // declareer de variabele buiten de voorwaarde
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // geeft 1 weer
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:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);