Nuancer af variablers rækkevidde i if-else konstruktioner i JavaScript

Variablers rækkevidde har en vis nuance. Lad os se på det med et eksempel. Lad os erklære en variabel res uden for vores betingelse med én værdi, og inde i betingelsen ændre denne værdi til en anden:

javascriptlet res = 1;

if (true) {
  res = 2;
}

console.log(res); // vil udskrive 2

Som du kan se, blev variablen res ændret inde i betingelsen. Alt ændrer sig dog, hvis vi også erklærer variablen res inde i betingelsen via let:

javascriptlet res = 1;

if (true) {
  let res = 2; // erklær variabel via let
}

console.log(res); // vil udskrive 1, ikke 2!

Her handler det hele om, at erklæringen af variablen via let inde i betingelsen skabte en lokal variabel res.

Det vil sige, at inde i betingelsen eksisterer den ene variabel res, og uden for betingelsen - en anden. Du kan overbevise dig selv om dette ved at udskrive værdien af variablen i konsollen inde i betingelsen:

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // vil udskrive 2
}

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

Forfatteren af koden nedenfor ønskede at udføre en alderskontrol for at opnå 18 år. Koden udskriver dog uanset aldersværdien værdien undefined i konsollen. Ret kodeforfatterens fejl. Her er den problematiske kode:

javascriptlet age = 17;
let adult;

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

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

Forfatteren af koden nedenfor ønskede at udføre en alderskontrol for at opnå 18 år. Efter kontrol af koden viste det sig, at hvis alderen er lig med eller større end 18 år, så bliver true skrevet til variablen adult, som det skal være, men hvis alderen er mindre end 18, har variablen adult værdien undefined. Ret kodeforfatterens fejl.

Her er den problematiske kode:

javascriptlet age = 17;
let adult;

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

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

Forfatteren af koden nedenfor ønskede at udføre en alderskontrol. Koden udskriver dog uanset aldersværdien værdien undefined i konsollen. Ret kodeforfatterens fejl.

Her er den problematiske kode:

javascriptlet age = 17;
let res;

if (age >= 18) {
  if (age <= 23) {
    let res = 'fra 18 til 23';
  } else {
    let res = 'mere end 23';
  }
} else {
  let res = 'mindre end 18';
}

console.log(res);
Задание 4

Forfatteren af koden nedenfor ønskede at udføre en alderskontrol. Koden udskriver dog ved en aldersværdi større end 18 år værdien undefined i konsollen. Ret kodeforfatterens fejl.

Her er den problematiske kode:

javascriptlet age = 19;
let res;

if (age >= 18) {
  let res;
  
  if (age <= 23) {
    res = 'fra 18 til 23';
  } else {
    res = 'mere end 23';
  }
} else {
  res = 'mindre end 18';
}

console.log(res);