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:
let 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:
let 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:
let res = 1;
if (true) {
let res = 2;
console.log(res); // exibirá 2
}
console.log(res); // exibirá 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:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
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:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
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:
let 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);
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:
let 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);