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

Variável achou = true.

Não entendi porque colocar a variável "achou = true"" depois do "alert ("Você acertou")" e antes do "break".

for(var posicao = 0; posicao < segredos.length; posicao++) {

                if(input.value == segredos[posicao]) {
                    alert("você acertou!!");
                     achou = true;
                    break;
                }
} 

Se já tem um "break" não era pra parar? Fiz o teste e tirei o "achou = true" e quando acerta o número aparece, "você acertou!!!" e em seguida aparece "você errou!!". Mesmo assim não entendi, se acerta o número não era pra para por conta do "break"?

<meta charset="UTF-8">

<input/>

<button>Compare com o segredo</button>

<script>

    var segredos = [2,5,8,1];

    var input = document.querySelector("input");
    input.focus();

        function verifica() {

            var achou = false;

            for(var posicao = 0; posicao < segredos.length; posicao++) {

                if(input.value == segredos[posicao]) {
                    alert("você acertou!!");
                     achou = true;  //  Essa parte que não entendi //
                    break;
                }

            } 
                if(achou  == false) {
                    alert("Você errou!!!");
                }    
                    input.value = "";
                    input.focus();

        }

    var button = document.querySelector("button");
    button.onclick = verifica;



</script>
2 respostas
solução!

Olá Sérgio,

Se você remover o achou = true o segundo if será executado, por isso aparece o Você errou. Tem que ter isso depois do alert para impedir que o segundo if seja executado.

O break vai parar a execução do laço, mas apenas o 1º if está dentro do escopo do for. 2 º if será verificado pois não faz parte do for, por isso a necessidade de fazer achou = true.

Espero ter ajudado. Um abraço.

Obrigado José Guilherme, agora deu uma clareada! Abraço.