Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Por que preciso colocar o '!' no if?

Se eu no final da função maiorQue18 já tem o retorno do valor verdadeiro ou falso, certo?

function maiorQue18(data) {
    console.log(data) 

    const dataAtual = new Date() //Se eu n colocar nenhuma valor, ele já pega a data de 'hoje'
    const dataMais18 = new Date(data.getUTCFullYear() + 18, data.getUTCMonth(), data.getUTCDate())

    return dataMais18 <= dataAtual
}

Por que eu preciso especificar que o if só deve ser executado se for falso mesmo? Eu achei que o padrão para o If ser executado, seria se a reposta fosse de fato verdadeira já

if (!maiorQue18(dataRecebida)) {
        menssagem = "Você deve ser maior de idade para se cadastrar."
        input.reportValidity();
    }

    input.setCustomValidity(menssagem)
    console.log(validaDataNascimento)

}
2 respostas
solução!

Olá Yuri, o ! significa o operador lógico 'not' ou 'não'. Nesse caso ele inverte o valor de falso para verdadeiro e vice-versa.

Então no caso ficara assim

vc é maior de 18? False (não é maior de dezoito)

se vc usar o ! a frase ficaria mais ou menos assim: NÃO é maior 18? True

Faça o teste abaixo:

var x = True

console.log(x)

console.log(!x)

Vc vai verificar que a função maiorQue18(dataRecebida) retorna False, maaaas o ! o inverte e o torna verdadeiro, por isso o if é executado.

Você coloca a ! para dizer que a condição "x" é falsa ao invés de verdadeira.

por exemplo besta só pra ajudar no entendimento:

if (carro = lamborgini) { console.log("Seu carro é uma lamborgini") }

ou então você faz com a !

if (carro != lamborgini) { console.log("Seu carro NÃO é uma lamborgini") }