Ámbito de variables en if-else en JavaScript
Para simplificar, supongamos que tenemos una condición que siempre se ejecuta:
if (true) {
}
Consideremos el siguiente código:
if (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:
let 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:
let 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:
let test = true;
let res; // declaremos la variable fuera de la condición
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // mostrará 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:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);