1
resposta

As dicas sobre o valor nao aparecem, e tambem sempre aparece digite um valor valido, msm eu acertando.

function verificaSeOChutePossuiUmValorValido(chute) {
    const numero = +chute

    if (chuteForInvalido(numero)) {
        elementoChute.innerHTML += '<div>valor inválido</div>'
        return
    }

    if(numeroForMaiorOuMenorQueOValorPermitido) {
        elementoChute.innerHTML += `<div>Valor invalido: Fale um numero entre ${menorValor} e ${maiorValor}</div>`
        return
    }

    if(numero === numeroSecreto) {
        document.body.innerHTML =`
            <h2>Voce Acertou<h2>
            <h3>O número secreto era ${numeroSecreto}</h3>
        `
    } else if (numero < numeroSecreto) {
        elementoChute.innerHTML += `
        <div>O número secreto é maior <i class="fa-solid fa-arrow-up"></i></div>
        `
    } else {
        elementoChute.innerHTML += `
        <div>O número secreto é menor <i class="fa-solid fa-arrow-down"></i></div>
        `
    }

}

function chuteForInvalido(numero) {
    return Number.isNaN(numero)
}

function numeroForMaiorOuMenorQueOValorPermitido(numero) {
    return numero > maiorValor|| numero <menorValor
}
1 resposta

Olá!

Você precisa chamar a função numeroForMaiorOuMenorQueOValorPermitido passando o numero na linha 9:

if (numeroForMaiorOuMenorQueOValorPermitido(numero)) {
// ...código omitido

Quando você apenas passa a referência da função para o if sem chamá-la (if (numeroForMaiorOuMenorQueOValorPermitido)), ela acaba sendo convertida para true, por conta da coerção de tipo do JavaScript, logo, o bloco if que pede um valor válido sempre é chamado e impede que as dicas ou a mensagem de acerto sejam exibidas (por causa do return na linha 11).