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

[Dúvida] variaveis

alert('Boas vindas ao jogo do número secreto!');
let numeroSecreto = 4;
console.log(numeroSecreto);
let chute

while (chute != numeroSecreto) {
    chute = prompt('Escolha um número entre 1 e 10');
    if (chute == numeroSecreto) {
        alert(`Isso aí! Você descobriu o numero secreto ${numeroSecreto}`);
    } else {
        if (chute > numeroSecreto) {
            alert(`o numero secreto é menor que ${chute}.`);

        } else {
            alert(`o numero secreto é maior que ${chute}.`);
        }
    }

}

Fiquei algumas dúvidas com relação a variável chute . No vídeo é falado que ela ficaria vazia fora do while. Por que isso ocorre? não é possivel deixar o let chute = prompt('Escolha um número entre 1 e 10') na parte superior, e em seguida apenas chama-la dentro do while? Outra dúvida sobre a criação de variáveis: Dentro do curso sobre SASS vimos a possibilidade de criação variáveis ao longo do código ( não apenas na parte superior) . Em JavaScript isso também é possivel?

3 respostas
solução!

Oii Rodrigo, tudo bem?

Vamos esclarecer suas dúvidas sobre a variável chute no código do jogo do número secreto.

  1. Por que a variável chute fica vazia fora do while? A variável chute é inicialmente declarada como vazia (let chute;) fora do laço while porque ela precisa ser definida dentro do laço. Isso garante que a cada iteração do laço, o valor de chute será atualizado com a entrada do usuário. Se você declarasse chute com prompt fora do laço, como em let chute = prompt('Escolha um número entre 1 e 10');, o prompt só seria chamado uma vez, e o valor de chute não seria atualizado nas iterações subsequentes do laço while. Isso faria com que o laço se repetisse indefinidamente com o mesmo valor inicial, a menos que fosse o número secreto.

  2. É possível criar variáveis ao longo do código em JavaScript, como no SASS? Sim, em JavaScript, você também pode declarar variáveis em qualquer parte do código. No entanto, é importante entender o escopo dessas variáveis. Variáveis declaradas com let ou const têm escopo de bloco, o que significa que elas existem apenas dentro do bloco (delimitado por chaves {}) em que foram declaradas. Isso é diferente de variáveis declaradas com var, que têm escopo de função ou global se declaradas fora de uma função.

Um exemplo prático seria:

if (true) {
    let exemplo = "Teste";
    console.log(exemplo); // Saída: Teste
}
console.log(exemplo); // Erro: exemplo is not defined

Neste exemplo, a variável exemplo é acessível apenas dentro do bloco if e tentar acessá-la fora desse bloco resultará em um erro.

Espero ter te ajudado.

Um abraço e bons estudos.

Eu agradeço pela ótima explicação!! Mas tenho mais uma dúvida ainda relacionado a variavel chute: não poderia criar essa variável dentro do loop while?

alert('Boas vindas ao jogo do número secreto!');
let numeroSecreto = 4;
console.log(numeroSecreto);


while (chute != numeroSecreto) {
   let  chute = prompt('Escolha um número entre 1 e 10');
    if (chute == numeroSecreto) {
        alert(`Isso aí! Você descobriu o numero secreto ${numeroSecreto}`);
    } else {
        if (chute > numeroSecreto) {
            alert(`o numero secreto é menor que ${chute}.`);

        } else {
            alert(`o numero secreto é maior que ${chute}.`);
        }
    }

}

tirando a let chute vazia do topo, em seguida criando dentro do while?

Olá!

No novo exemplo que você forneceu, onde a variável chute é declarada dentro do loop while, há um problema que pode causar um comportamento inesperado.

Quando você declara a variável chute dentro do loop while, ela é redefinida a cada iteração do loop. Isso significa que, a cada iteração, uma nova variável chute é criada, e a variável anterior é "esquecida" pelo programa.

No contexto do jogo do número secreto, isso pode causar problemas, pois a variável chute é usada para armazenar a entrada do usuário em cada tentativa. Se uma nova variável chute for criada a cada iteração, o programa não será capaz de armazenar e comparar os chutes anteriores do usuário com o número secreto.

Assim, ao declarar let chute dentro do loop, o código se torna incapaz de manter o valor anterior de chute, resultando em um loop infinito ou em um comportamento imprevisível.

Portanto, é preferível declarar a variável chute fora do loop while, para que ela seja inicializada apenas uma vez e mantenha seu valor ao longo das iterações do loop, permitindo que o programa funcione corretamente.

Um abraço e bons estudos.