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

Dúvida com operador lógico curso de JavaScript

Estava refazendo os exercícios do curso de JavaScript, precisamente o exercício para validar um novo paciente(aula 6). Durante uma aula anterior, o professor criou a função validaPeso, similar a essa:

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

E, ao chamar essa função na validação do novo paciente no formulário, assim:

function validaPaciente(paciente) {

    if (validaPeso(paciente.peso)) {
        return "";
    } else {
        return "Peso é inválido";
    }
}

o código funciona normalmente, a minha dúvida é: quando eu fui refazer eu escrevi o código valida peso de uma forma um pouco diferente:

function validaPeso(peso) {
    if(peso < 0 || peso > 1000) {
        return false;
    } return true;
}

porém, ao chamar essa função para validar um novo paciente, dessa forma:

function validaPaciente(paciente) {
    if(!validaPeso(paciente.peso)) {
        return "Peso invalido";
    } return "";
}

Não funciona, mesmo eu utilizando o operador lógico no if, ou invertendo o caso, e outra, se eu volto e escrevo como a do professor funcionar normalmente, alguém sabe me dizer porque isso acontece?

1 resposta
solução!

Consegui resolver com a ajuda de um amigo dev, eu errei aqui:

function validaPeso(peso) {
    if(peso < 0 || peso > 1000) {
        return false;
    } return true;
}

Deveria ter colocado "Peso < 1" para o zero não passar e o programa funcionar como deveria.