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:

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

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

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // visualizzerà 2
}

console.log(res); // visualizzerà 1
Задание 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:

javascriptlet age = 17;
let adult;

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

console.log(adult);
Задание 2

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:

javascriptlet age = 17;
let adult;

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

console.log(adult);
Задание 3

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:

javascriptlet 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);
Задание 4

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:

javascriptlet 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);