Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Variáveis dentro do while vazam para fora do escopo ?

Olá pesssoal, duas perguntas.

Tentei capturar fora do escopo do while uma 'var' declarada entre blocos '{ }' e não tive retorno. No exemplo do código tentei pegar fora do while a var chute com 'console.log(chute);' mas o resultado foi //undefined.

1) Variáveis dentro do while não vazam ?

    function pulaLinha() {
        document.write("<br>")
    }

    function mostra(frase) {
        document.write(frase);                    
        pulaLinha();
    }

 function sorteia(n) {

     var numeroPensado = Math.round(Math.random() * n);

     if (numeroPensado == 0) {                  
         numeroPensado ++;

     }

    return numeroPensado;

 }

 var numeroPensado = sorteia(10); 
  console.log(numeroPensado);

 var tentativa = 3

 console.log(chute);
 while(tentativa >= 1){


     var chute = parseInt(prompt("Digite seu chute!"));

     var verificaChute = chute == numeroPensado;

     if (verificaChute) {

         mostra("Você acertou!");
         break;

     } else {



       if (chute > numeroPensado) {

            alert("Você errou! Não é " + chute + ", O número pensado é menor.");

       } else {

        alert("Você errou! Não é " + chute + ", O número pensado é maior.");


       }


     }

    tentativa--;

 }

 mostra("Fim");

2) A segunda pergunta é, posso ter problemas declarando a quantidade de tentativas fora do while? Exemplo.

Na aula a variável é tentativa = 1 e o laço que limita em 3 e soma 1 por volta.

No meu exemplo a variável é tentativa = 3 e o laço subtrai 1 por volta.

Eu invertir a ordem ++ para -- por curiosidade. ok! ai surgiu a dúvida...

2 respostas
solução

Olá Davilson Lopes Rodrigues, tudo bem?

Respondendo sua 1ª pergunta: Uma variável declarada dentro do bloco da função só é acessível dentro deste bloco. Exemplo:

// aqui minhaVariavel não existe

function escopoDeVariavel() {
    var minhaVariavel; 
    // aqui dentro das {} minhaVariavel existe
}

// aqui minhaVariavel não existe

Então continuando respondendo a 1ª pergunta, se você precisa utilizar uma variável de forma "global" dentro do script, declare-a dentro das tags script. Exemplo:

<script>
var minhaVariavel;

function escopoDeVariavel() {
// minhaVariavel é acessada aqui
}

// minhaVariavel é acessada aqui
</script>

Respondendo a pergunta 2ª: não vejo problema a variável ser declarada fora do while, mas se você não precisar dela fora do while não tem porque declará-la fora do while.

Espero ter ajudado.

Att

Obrigado Ricardo Messias da Silva Rocha,

Ajudou sim, ficou bem claro pelo seus exemplos. Agradeço vc's do fórum, tenho aprendido muito aqui, com minhas dúvidas e observando as dúvidas de outros, com formas diferente de resolver algo...

Valew! :)