Sfumature dell'ambito di visibilità delle variabili nelle costruzioni if-else in JavaScript
L'ambito di visibilità delle variabili possiede una certa
sfumatura. Esaminiamola con un esempio.
Dichiariamo all'esterno della nostra condizione una variabile
res con un valore, e all'interno
della condizione cambiamo questo valore con un altro:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // visualizzerà 2
Come puoi vedere, la variabile res è cambiata
all'interno della condizione. Tutto, tuttavia, cambierà,
se all'interno della condizione dichiariamo anche la variabile
res tramite let:
let res = 1;
if (true) {
let res = 2; // dichiariamo la variabile tramite let
}
console.log(res); // visualizzerà 1, e non 2!
Qui il punto è che la dichiarazione della variabile
tramite let all'interno della condizione ha creato una
variabile locale res.
Cioè all'interno della condizione esiste una variabile
res, e all'esterno della condizione - un'altra.
Possiamo esserne certi, visualizzando il valore della variabile
in console all'interno della condizione:
let res = 1;
if (true) {
let res = 2;
console.log(res); // visualizzerà 2
}
console.log(res); // visualizzerà 1
L'autore del codice qui sotto voleva eseguire
un controllo dell'età per il raggiungimento dei 18
anni. Il codice, tuttavia, per qualsiasi valore dell'età
visualizza in console il valore undefined.
Correggi l'errore dell'autore del codice. Ecco il codice problematico:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
L'autore del codice qui sotto voleva eseguire
un controllo dell'età per il raggiungimento dei 18
anni. Dopo aver controllato il codice, si è scoperto che se
l'età è uguale o superiore a 18 anni, allora
nella variabile adult viene registrato true,
come dovrebbe essere, tuttavia, se l'età è minore
di 18, la variabile adult ha
valore undefined. Correggi l'errore
dell'autore del codice.
Ecco il codice problematico:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
L'autore del codice qui sotto voleva eseguire
un controllo dell'età. Il codice, tuttavia, per qualsiasi
valore dell'età visualizza in console il valore
undefined. Correggi l'errore dell'autore del codice.
Ecco il codice problematico:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = 'da 18 a 23';
} else {
let res = 'maggiore di 23';
}
} else {
let res = 'minore di 18';
}
console.log(res);
L'autore del codice qui sotto voleva eseguire
un controllo dell'età. Il codice, tuttavia, per un valore
dell'età maggiore di 18 anni visualizza in
console il valore undefined. Correggi
l'errore dell'autore del codice.
Ecco il codice problematico:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = 'da 18 a 23';
} else {
res = 'maggiore di 23';
}
} else {
res = 'minore di 18';
}
console.log(res);