3
respostas

[Dúvida] Codigo com looping infinito?

alert('Praticando logica de programaçao com javascript em funçao de desenvolver um jogo'); // o alert serve para alertamos sobre oque sera escrito em nossa tela //

let numeroMisterioso = 2; // variaveis são responsaveis por guardar tipos de dados na memoria //
 
console.log(numeroMisterioso); // este console aqui informa a variavel declarada numeroMisterioso e esta em forma de variavel e nao string se quisermos em string basta adcionarmos as aspas '' //

let acerto  // um espaço vazio na memoria pois nao tem nada declarado, porem nao deixa de ser uma variavel // 

console.log('Valor do acerto:', acerto);
console.log('Resultado da comparação:', acerto == numeroMisterioso);

// enquanto o acerto nao for igual ao numero misterioso //
while(acerto != numeroMisterioso){
  
   let acerto = prompt('Tente acertar o numero correto de 1 a 100 e ganhe um premio ao descobrir.'); 
// se o acerto for igual ao numero secreto //
   if (acerto == numeroMisterioso) { // aqui foi criada uma condição ( if - se um tal for maior que tal da tal coisa ) para ver se a variavel acerto for igual == a variavel numero misterioso de valor 54 apareça o resultado correto no console.log

      alert(`Você teve exito ao acertar o numero que foi o ${numeroMisterioso} parabens `); // realiza meio que um ambiente secreto para visualização se o codigo estar correto e ve-lo como se comporta no inspecionar da web//
   }   
         else {  
         if (acerto > numeroMisterioso){
            alert(`O numero e menor que e o ${acerto}`);
            console.log('o numero era ' + 2);

         } else{
         alert(`O numero secreto e maior que e o ${acerto}`);
         console.log('o numero era ' + 2);
         }
            

   }
   }

Meu codigo esta bugado nao aparece meus consoles e tambem quando digito o numero correto apenas volta ao inicio


3 respostas

Ola amigo! talvez uma causa do problema seja que vc redefine o "acerto" na linha "let acerto = prompt('Tente acertar..." isso funcionara apenas no contexto das chaves do while, tente retirar a palavrinha let dai, creio que isto será o suficiente :) (isto resolveria o problema do loop) sobre os console.log() talvez seria uma boa rodar em outro navegador, testei aqui no firefox e tudo aparentemente esta rodando corretamente!

MUITO OBRIGADO RESOLVEU OQ VC FALOU POREM O PORQUE OCORREU ISSO?

A palavra "let" define contexto (lugar onde opera) como as {} mais próximas, pra tudo que estiver fora dos {} o let "não existe" por isso o código do while buscava o que tinha em acerto e não achava o valor certo. Como pode ver ali while(){} tem seu conjunto de {} e fora dele existe outro let com o mesmo nome, por isso ao invés de ter um erro de não encontrar "acerto" ele na verdade obtém o "undefined" porque a variável esta vazia (e define que o loop não acabou pois a condição de igualdade seria falsa)

não sei se fui claro suficiente mas basicamente, isso ai. Caso não tenha mais duvidas pode marcar como "finalizado" :) Boa sorte no aprendizado mano levi!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software