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

Estrutura do código

Boa noite!

Gostaria de saber se é errado colocar um break após o segundo alertar para interromper o código de emitir repetidos "Você errou!" ao invés de usar um false or true, como mostrado no exercício?

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>

    var segredos = [1,3,5,7,9];
    var input = document.querySelector("input");
    input.focus();

    function verifica() {

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

            if(input.value == segredos[posicao]) {

                alert("É isso aí, você acertou!");
                break;
            } else {

                alert("Achou errado, foi mal!");
                break;
            }
        input.value = "";
        input.focus();
        }
    }
    var button = document.querySelector("button");
    button.onclick = verifica;

</script>
5 respostas

Boa noite Willian!

a função break serve para interromper um loop. mais detalhes no link:https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/break no caso do seu código a não é necessário no segundo caso. basta definir a quantidade de vezes que você quer que o loop rode. já no caso de a pessoa acertar e interessante o código parar e não pedir mais uma nova entrada.

espero ter lhe ajudado

bons estudo!

solução!

Boa noite, William! Como vai?

O problema no seu código é que do jeito que ele está nunca chegará ao final do seu array de segredos uma vez que independentemente de o usuário errar ou acertar o seu for será interrompido com o break. Ou seja, na primeira iteração do seu for ele já será interrompido informando que o usuário erro mesmo ele chutando o valor 9 que está no array. Portanto, a sua solução não é compatível com a apresentada pelo instrutor.

Qualquer dúvida é só falar!

Grande abraço e bons estudos!

Olá, Carlos!

Eu entendi o uso da função break. A minha questão é se ao usa-la no meu código para interromper o fluxo de negativas puxado pelo array, poderia causar algum problema futuro, se é contra convenção ou qualquer coisa do gênero.

No exercício proposto, o instrutor utiliza a function desta forma:

function verifica() {

    var achou = false;

    for(var i = 0; i < segredos.length; i = i + 1) {
        if(segredos[i] == input.value) {
            achou = true;
            break;
        }
}

    if(achou == true) {
        alert("Parabéns! Você acertou um dos números secretos");
    }
    else {
        alert("Infelizmente você errou!");
    }
}

Já a minha, que realizou a mesma função, ficou:

 function verifica() {

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

            if(input.value == segredos[posicao]) {

                alert("É isso aí, você acertou!");
                break;
            } else {

                alert("Achou errado, foi mal!");
                break;
            }
        input.value = "";
        input.focus();
        }
    }

A dúvida é se a escrita desta forma causaria algum problema.

Agora entendi o ponto. Obrigado Gabriel e Carlos.

Por nada, William!

Sempre que tiver qualquer dúvida é só mandar aqui no fórum!

Grande abraço e bons estudos!