1
resposta

[Dúvida] O let chute dentro ou fora da function?

Gostaria de saber por que o "let chute " só irá trazer o valor boolean correto se tiver dentro da function. Tentei declarar ele no começo do algoritmo, mas acabou mostrando sempre false.

let numeroAleatorio = gerarNumeroAleatorio() let chute = document.querySelector('input').value

function inserirTexto(tag,texto){ let campo = document.querySelector(tag) campo.innerHTML = texto }

inserirTexto('h1', 'Jogo do número secreto') inserirTexto('p','Escolha um número entre 1 e 100')

function verificarChute(){

console.log(` esse é o numeroaleatorio ${numeroAleatorio}`)
console.log(chute == numeroAleatorio)

}

function gerarNumeroAleatorio() { return parseInt(Math.random() *10 + 1)

}

1 resposta

Opa, salve, tudo bem? O motivo é simples, no caso quando você não reatribui o valor do chute dentro da função, significa que esse valor não vai ser alterado, e permanece o mesmo que no inicio do algoritmo.

let numeroAleatorio = gerarNumeroAleatorio();
let chute = document.querySelector('input').value; // Erro aqui!

function inserirTexto(tag,texto){
    let campo = document.querySelector(tag);
    campo.innerHTML = text;
}

inserirTexto('h1', 'Jogo do número secreto');
inserirTexto('p','Escolha um número entre 1 e 100');

function verificarChute(){
    // Erro encontrado aqui!
    console.log(` esse é o numeroaleatorio ${numeroAleatorio}`);
    console.log(chute == numeroAleatorio);
}

function gerarNumeroAleatorio() {
    return parseInt(Math.random() *10 + 1);
}

Esse era teu código, como pode ver, o valor chute nunca mais é atualizado e sempre vai começar com o valor que já está no input. Para corrigir teu código, basta declarar ele no início, mas reatribuir ele dentro da função verificar chute, como abaixo.

let numeroAleatorio = gerarNumeroAleatorio();
let chute;

function inserirTexto(tag,texto){
    let campo = document.querySelector(tag);
    campo.innerHTML = text;
}

inserirTexto('h1', 'Jogo do número secreto');
inserirTexto('p','Escolha um número entre 1 e 100');

function verificarChute(){
    // Antes dele verificar qual o chute ele muda o valor
    // do chute para o que está no input antes de clicar no botao
    chute =  = document.querySelector('input').value;
    console.log(` esse é o numeroaleatorio ${numeroAleatorio}`)
    console.log(chute == numeroAleatorio)
}

function gerarNumeroAleatorio() {
    return parseInt(Math.random() *10 + 1)
}