Escopo de Variáveis em if-else em JavaScript
Para simplificar, vamos supor que temos uma condição sempre verdadeira:
if (true) {
}
Vamos considerar o seguinte código:
if (true) {
let res = '!';
}
console.log(res);
Como você pode ver, o valor '!'
deveria ser atribuído à variável res.
No entanto, ao executar este código, um erro
será exibido no console!
O fato é que as variáveis declaradas dentro de chaves são visíveis apenas dentro dessas chaves e não são visíveis fora delas. Em termos técnicos, estamos falando sobre escopo de variáveis.
Podemos dizer que o escopo das variáveis declaradas dentro de chaves é limitado a essas mesmas chaves. No entanto, se uma variável é declarada fora das chaves, ela é visível tanto dentro quanto fora delas:
let res; // variável declarada fora
if (true) {
res = '!';
}
console.log(res); // exibirá '!'
No exemplo a seguir, o valor 1 ou
2 é atribuído à variável res
dependendo da condição:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
No entanto, ao executar este código, um erro será exibido no console. Como você já deve entender, o problema está na visibilidade das variáveis. Para resolver o problema, vamos declarar a variável fora da condição:
let test = true;
let res; // declarando a variável fora da condição
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // exibirá 1
O autor do código abaixo queria verificar
se a idade era igual ou superior a 18
anos. No entanto, o código não funciona.
Corrija o erro do autor do código. Aqui está
o código problemático:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);