Ámbito de variables en if-else en JavaScript

Para simplificar, supongamos que tenemos una condición que siempre se ejecuta:

javascriptif (true) {
  
}

Consideremos el siguiente código:

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

console.log(res);

Como puedes ver, en la variable res debería almacenarse el valor '!'. Sin embargo, si ejecutas este código, ¡en la consola se mostrará un error!

El hecho es que las variables declaradas dentro de llaves, son visibles solo dentro de esas llaves, y no son visibles fuera. En términos científicos se trata del ámbito de las variables.

Se puede decir que el ámbito de visibilidad de las variables declaradas dentro de llaves, son solo esas llaves. Sin embargo, si la variable se declara fuera de las llaves, entonces es visible tanto dentro de ellas como fuera:

javascriptlet res; // la variable se declara fuera

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

console.log(res); // mostrará '!'

En el siguiente ejemplo, en la variable res dependiendo de la condición, se almacena o el valor 1, o el valor 2:

javascriptlet num = 5;

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

console.log(res);

Sin embargo, si ejecutas este código, en la consola se mostrará un error. Como ahora ya entiendes, todo se debe a la visibilidad de las variables. Para resolver el problema, declaremos la variable fuera de la condición:

javascriptlet test = true;
let res; // declaremos la variable fuera de la condición

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

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

El autor del código proporcionado a continuación quería realizar una verificación de edad para alcanzar los 18 años. El código, sin embargo, no funciona. Corrige el error del autor del código. Aquí está el código problemático:

javascriptlet age = 17;

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

console.log(adult);