Nuances do escopo de variáveis em construções if-else em JavaScript

O escopo de variáveis tem um certo nuance. Vamos examiná-lo com um exemplo. Vamos declarar fora da nossa condição a variável res com um valor, e dentro da condição mudaremos esse valor para outro:

javascriptlet res = 1;

if (true) {
  res = 2;
}

console.log(res); // exibirá 2

Como você vê, a variável res mudou dentro da condição. Tudo, no entanto, mudará, se dentro da condição também declararmos a variável res via let:

javascriptlet res = 1;

if (true) {
  let res = 2; // declararemos a variável via let
}

console.log(res); // exibirá 1, e não 2!

Aqui, a questão é que a declaração da variável via let dentro da condição criou uma variável local res.

Ou seja, dentro da condição existe uma variável res, e fora da condição - outra. Podemos confirmar isso, exibindo o valor da variável no console dentro da condição:

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // exibirá 2
}

console.log(res); // exibirá 1
Задание 1

O autor do código abaixo quis realizar a verificação da idade para atingir 18 anos. O código, no entanto, para qualquer valor de idade exibe no console o valor undefined. Corrija o erro do autor do código. Aqui está o código problemático:

javascriptlet age = 17;
let adult;

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

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

O autor do código abaixo quis realizar a verificação da idade para atingir 18 anos. Após a verificação do código, descobriu-se que se a idade for igual ou maior a 18 anos, então na variável adult é registrado true, como deveria ser, no entanto, se a idade for menor que 18, então a variável adult tem o valor undefined. Corrija o erro do autor do código.

Aqui está o código problemático:

javascriptlet age = 17;
let adult;

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

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

O autor do código abaixo quis realizar a verificação da idade. O código, no entanto, para qualquer valor de idade exibe no console o valor undefined. Corrija o erro do autor do código.

Aqui está o código problemático:

javascriptlet age = 17;
let res;

if (age >= 18) {
  if (age <= 23) {
    let res = 'de 18 a 23';
  } else {
    let res = 'mais de 23';
  }
} else {
  let res = 'menos de 18';
}

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

O autor do código abaixo quis realizar a verificação da idade. O código, no entanto, para valor de idade maior que 18 anos exibe no console o valor undefined. Corrija o erro do autor do código.

Aqui está o código problemático:

javascriptlet age = 19;
let res;

if (age >= 18) {
  let res;
  
  if (age <= 23) {
    res = 'de 18 a 23';
  } else {
    res = 'mais de 23';
  }
} else {
  res = 'menos de 18';
}

console.log(res);