Variablers synlighetsområde i if-else i JavaScript

La oss for enkelhets skyld ha en betingelse som alltid utføres:

javascriptif (true) {
  
}

La oss se på følgende kode:

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

console.log(res);

Som du ser, skal variabelen res få verdien '!'. Men, hvis du kjører denne koden, vil det komme en feilmelding i konsollen!

Grunnen er at variabler deklarert innenfor krøllparenteser, kun er synlige innenfor disse parentesene, og ikke synlige utenfor. Vitenskapelig sett snakker vi her om variablers synlighetsområde.

Man kan si at synlighetsområdet for variabler deklarert innenfor krøllparenteser, kun er disse krøllparentesene. Men, hvis en variabel er deklarert utenfor krøllparentesene, er den synlig både inni dem og utenfor:

javascriptlet res; // variabel deklarert utenfor

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

console.log(res); // vil skrive ut '!'

I det neste eksemplet blir variabelen res avhengig av betingelsen satt til enten verdien 1, eller verdien 2:

javascriptlet num = 5;

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

console.log(res);

Men hvis du kjører denne koden, vil det komme en feilmelding i konsollen. Som du nå forstår, handler det hele om variabeles synlighet. For å løse problemet deklarerer vi variabelen utenfor betingelsen:

javascriptlet test = true;
let res; // deklarerer variabelen utenfor betingelsen

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

console.log(res); // vil skrive ut 1
Задание 1

Forfatteren av koden nedenfor ønsket å utføre en sjekk av alder for å oppnå 18 år. Koden fungerer imidlertid ikke. Rett opp feilen i forfatterens kode. Her er den problematiske koden:

javascriptlet age = 17;

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

console.log(adult);