Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

duvidas sobre funções

let pesoEhValido = (peso) => {
        if(peso >= 0 && peso < 1000){
            peso = true
        } else {
            peso = false
        }
    }
    let alturaEhValida = true;

    if(!pesoEhValido){
        console.log("Peso invalido");
        pesoEhValido = false;
        tdImc.textContent = "Peso Invalido";
        paciente.classList.add("paciente-invalido");
    }

    if(altura < 0 || altura >= 3.00){
        console.log("Altura Invalida");
        alturaEhValida = false;
        tdImc.textContent = "Altura Invalida";
        paciente.classList.add("paciente-invalido");
    }

    if(pesoEhValido && alturaEhValida){
        let imc = calculaImc(peso, altura);
        tdImc.textContent = imc;
    }
}

function calculaImc(peso, altura){
    let imc = 0;

    imc = peso / (altura * altura);

    return imc.toFixed(2);
}

//function validaPeso(peso){
//    if(peso >= 0 && peso < 1000){
//        return true
//    } else {
//        return false
//    }
//}

quando cheguei nessa parte do curso pensei em usar uma arrow function, mas não funcionou como esperado, não entendi o porque

1 resposta
solução!

Olá, Allan, tudo bem?

O problema é que sua função pesoEhValido não está retornando nenhum valor:

let pesoEhValido = (peso) => {
        if(peso >= 0 && peso < 1000){
            peso = true
        } else {
            peso = false
        }
    }

Você está alterando o valor do parâmetro peso, mas isso por si só não faz diferença no restante do programa, pois esse parâmetro existe apenas dentro dessa função.

Para que a função realmente nos ajude no restante do programa, podemos retornar true ou false dependendo da condição do if:

let pesoEhValido = (peso) => {
        if(peso >= 0 && peso < 1000){
            return true
        } else {
            return false
        }
    }

Perceba que pesoEhValido é uma função, e sozinha ela não recebe o valor true ou false. Nós precisamos executá-la para que tenhamos como retorno um desses dois valores.

Como o peso ser válido ou não é uma informação que você quer utilizar em mais de um lugar do código, vamos mudar o nome dessa função para validaPeso, e aí atribuiremos o valor do seu retorno a uma variável que terá o nome pesoEhValido:

let validaPeso = (peso) => {  // mudei nome para "validaPeso"
        if(peso >= 0 && peso < 1000){
            return true
        } else {
            return false
        }
    }

Agora criamos a variável que recebe o retorno da função:

let pesoEhValido = validaPeso(peso);

E note que acima eu passei como parâmetro da função a variável peso, que já tinha sido declarada anteriormente no código.

Agora podemos usar a informação pesoEhValido (que terá valor true ou false) em outros lugares do programa.

Espero ter ajudado! Abraços e bons estudos :)