Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Dúvidas sobre a variável pesoEhValido e alturaEhValido

Consegui fazer o código mas quero entender melhor o porque de criar as variáveis com true. Seria somente para usá-las no if?

2 respostas

Oi Vitor, cola o código aqui pra gente explicar direitinho baseado no seu projeto?

A resposta rápida é que sim, pra usar em ifs pra podermos validar se algo está de acordo ou não. Não temos essa garantia sempre. Entende?

solução

Oi vitor,

é mais ou menos isso sim

A ideia é não fazer uma comparação gigante lá dentro do último if. Que ficaria assim:

if((peso <= 0 || peso > 1000) && (altura <= 0 || altura >= 3)){
    var imc = peso / ( altura * altura);    
    tdImc.textContent = imc;
}

Com as variáveis a condição dentro do if fica mais legível:

if (alturaEhValida && pesoEhValido) {
    var imc = peso / (altura * altura);
    tdImc.textContent = imc;    
}

Agora o ponto é que se apenas declarássemos a variável sem colocar um valor , assim:

var pesoEhValido

Caso o peso fosse válido, ele não entraria nesse if aqui:

if (peso <= 0 || peso > 1000) {
    console.log("Peso inválido!");
    tdPeso.textContent = "Peso inválido!";
    pesoEhValido = false;
}

pesoEhValido não viraria false e continuaria com um valor undefined (indefinido). Esse undefined representa que niguém atribuiu um valor à variável. Na hora de passar pelo if:

if (alturaEhValida && pesoEhValido) {

pesoEhValido valeria como se fosse um false, pois undefined é um valor que vira false quando convertido para booleano