Matices del ámbito de las variables en las construcciones if-else en JavaScript

El ámbito de las variables tiene un cierto matiz. Considerémoslo con un ejemplo. Declaremos fuera de nuestra condición la variable res con un valor, y dentro de la condición cambiemos este valor a otro:

javascriptlet res = 1;

if (true) {
  res = 2;
}

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

Como puedes ver, la variable res cambió dentro de la condición. Sin embargo, todo cambiará, si dentro de la condición también declaramos la variable res mediante let:

javascriptlet res = 1;

if (true) {
  let res = 2; // declaremos la variable mediante let
}

console.log(res); // mostrará 1, ¡no 2!

Aquí la cuestión es que la declaración de la variable mediante let dentro de la condición creó una variable local res.

Es decir, dentro de la condición existe una variable res, y fuera de la condición - otra. Podemos convencernos de esto, mostrando el valor de la variable en la consola dentro de la condición:

javascriptlet res = 1;

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

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

El autor del código a continuación quería realizar una verificación de edad para alcanzar los 18 años. Sin embargo, el código para cualquier valor de edad muestra en la consola el valor undefined. Corrige el error del autor del código. Aquí está el código problemático:

javascriptlet age = 17;
let adult;

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

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

El autor del código a continuación quería realizar una verificación de edad para alcanzar los 18 años. Después de verificar el código, resultó que si la edad es igual o mayor a 18 años, entonces en la variable adult se escribe true, como debería ser, sin embargo, si la edad es menor a 18, entonces la variable adult tiene el valor undefined. Corrige el error del autor del código.

Aquí está el código problemático:

javascriptlet age = 17;
let adult;

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

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

El autor del código a continuación quería realizar una verificación de edad. Sin embargo, el código para cualquier valor de edad muestra en la consola el valor undefined. Corrige el error del autor del código.

Aquí está el código problemático:

javascriptlet age = 17;
let res;

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

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

El autor del código a continuación quería realizar una verificación de edad. Sin embargo, el código para un valor de edad mayor a 18 años muestra en la consola el valor undefined. Corrige el error del autor del código.

Aquí está el código problemático:

javascriptlet age = 19;
let res;

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

console.log(res);