Variablers rækkevidde i if-else i JavaScript

Lad os for enkelheds skyld have en betingelse, der altid udføres:

javascriptif (true) {
  
}

Lad os se på følgende kode:

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

console.log(res);

Som du kan se, skal variablen res tilskrives værdien '!'. Men hvis du kører denne kode, vil der vises en fejl i konsollen!

Grunden er, at variabler, deklareret inden for krøllede parenteser, kun er synlige inde i disse parenteser og ikke er synlige udenfor. Videnskabeligt set taler vi her om variablers rækkevidde.

Man kan sige, at rækkevidden for variabler deklareret inde i krøllede parenteser kun er disse krøllede parenteser. Men hvis en variabel er deklareret uden for de krøllede parenteser, er den synlig både inde i dem og udenfor:

javascriptlet res; // variabel deklareret udenfor

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

console.log(res); // vil udskrive '!'

I det næste eksempel tildeles variablen res enten værdien 1 eller værdien 2 afhængigt af betingelsen:

javascriptlet num = 5;

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

console.log(res);

Men hvis du kører denne kode, vil der opstå en fejl i konsollen. Som du nu forstår, skyldes det variablers rækkevidde. For at løse problemet deklarerer vi variablen uden for betingelsen:

javascriptlet test = true;
let res; // deklarer variablen uden for betingelsen

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

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

Forfatteren af koden nedenfor ønskede at udføre en alderskontrol for at opnå 18 år. Koden fungerer dog ikke. Ret fejlen i forfatterens kode. Her er den problematiske kode:

javascriptlet age = 17;

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

console.log(adult);