1
resposta

Erro comum, validação de menores de 18

Notei que não fui o único a ter esse problema e resolvi abrir este tópico para ajudar os demais a se resolverem.

Ao executar meu código, aconteceu exatamente o contrário do comportamento esperado: digitei uma data de nascimento de alguém com menos de 18 anos e o cadastro foi aprovado. Procurei no código inteiro algo que pudesse estar errado/diferente do que o professor fez e nada. Até que, nessa função, notei algo estranho:

function moreThan18(date) {
    const currentDate = new Date();
    const moreThan18Date = new Date(
        date.getUTCFullYear() + 18,
        date.getUTCMonth(),
        date.getUTCDate()
    );

    return moreThan18Date <= currentDate;
}

Note que na hora de declarar o return, não existe um parêntese isolando o conteúdo que será retornado. Então resolvi usá-los:

function moreThan18(date) {
    const currentDate = new Date();
    const moreThan18Date = new Date(
        date.getUTCFullYear() + 18,
        date.getUTCMonth(),
        date.getUTCDate()
    );

    return (moreThan18Date <= currentDate); // dessa forma o conteúdo a ser retornado fica bem definido e legível
}

Imediatamente, ao testar o código, ele funcionou do jeito que eu esperava. Espero ter ajudado!

1 resposta

Boa Nicolas! Muito importante postar dúvidas que podem ser recorrentes dos demais alunos, com certeza seu tópico irá ajudar muitas pessoas! Pra cimaaa!!!