let idade = 18;
let temCarteira = true;
if(idade >= 18 && temCarteira) {
let msg = 'Pode dirigir';
console.log(msg);
}
alert(msg); // undefined, porque `msg` foi declarada com `let` dentro do bloco do `if`.
let idade = 18;
let temCarteira = true;
if(idade >= 18 && temCarteira) {
let msg = 'Pode dirigir';
console.log(msg);
}
alert(msg); // undefined, porque `msg` foi declarada com `let` dentro do bloco do `if`.
Boa tarde Ernani,
Ao executar o código, com estes dados, ele entra no if sim.
Provavelmente, você reparou que imprimiu no console Pode dirigir.
Contudo, a mensagem não vai aparecer em um alerta pois, mesmo entrando no if, o escopo da variável msg é apenas o do if. Ou seja, mesmo que entre no if, ao terminá-lo, a variável msg deixa de existir.
Espero tê-lo ajudado. Avisa aí se ficou claro.
Abraço.
Boa noite, Ernani! Como vai?
O seu código até entrar dentro do bloco if
, mas o let
cria variáveis com o chamado escopo léxico. Diferentemente das variáveis declaradas com var
, as criadas com o let
existirão apenas dentro do bloco onde elas foram criadas, ou seja, a sua variável msg
existe apenas dentro do if
, por isso que ao chegar no alert(msg)
é exibido undefined
.
Deu pra pegar a ideia?
Grande abraço e bons estudos!