Nuances van variabele bereik in if-else constructies in JavaScript
Variabele bereik heeft een bepaald
nuance. Laten we het bekijken aan de hand van een voorbeeld.
Laten we buiten onze voorwaarde een variabele declareren
res met één waarde, en binnenin
de voorwaarde veranderen we deze waarde naar een andere:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // geeft 2 weer
Zoals je ziet, is de variabele res veranderd
binnen de voorwaarde. Alles verandert echter,
als binnen de voorwaarde ook de variabele
res wordt gedeclareerd via let:
let res = 1;
if (true) {
let res = 2; // declareer variabele via let
}
console.log(res); // geeft 1 weer, niet 2!
Hier komt het allemaal doordat de declaratie van de variabele
via let binnen de voorwaarde een lokale
variabele res heeft gecreëerd.
Dat betekent dat binnen de voorwaarde de ene variabele
res bestaat, en buiten de voorwaarde - een andere.
Hiervan kun je je vergewissen door de waarde van de variabele
in de console weer te geven binnen de voorwaarde:
let res = 1;
if (true) {
let res = 2;
console.log(res); // geeft 2 weer
}
console.log(res); // geeft 1 weer
De auteur van de onderstaande code wilde een
controle uitvoeren op het bereiken van de leeftijd van 18
jaar. De code geeft echter bij elke leeftijdswaarde
de waarde undefined weer in de console.
Verbeter de fout van de auteur van de code. Hier is de problematische code:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
De auteur van de onderstaande code wilde een
controle uitvoeren op het bereiken van de leeftijd van 18
jaar. Na controle van de code bleek dat als
de leeftijd gelijk is aan of groter dan 18 jaar, dan
wordt in de variabele adult true opgeslagen,
zoals hoort, echter, als de leeftijd minder is dan
18, dan heeft de variabele adult de
waarde undefined. Verbeter de fout
van de auteur van de code.
Hier is de problematische code:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
De auteur van de onderstaande code wilde een
leeftijdscontrole uitvoeren. De code geeft echter bij elke
leeftijdswaarde de waarde
undefined weer in de console. Verbeter de fout van de auteur van de code.
Hier is de problematische code:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = 'van 18 tot 23';
} else {
let res = 'meer dan 23';
}
} else {
let res = 'minder dan 18';
}
console.log(res);
De auteur van de onderstaande code wilde een
leeftijdscontrole uitvoeren. De code geeft echter bij een leeftijdswaarde
groter dan 18 jaar de
waarde undefined weer in de console. Verbeter
de fout van de auteur van de code.
Hier is de problematische code:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = 'van 18 tot 23';
} else {
res = 'meer dan 23';
}
} else {
res = 'minder dan 18';
}
console.log(res);