1
resposta

Por que não funciona desse jeito?

Pessoal, tentei por muito tempo fazer de um jeito que não dá certo, o programa fica carregando eternamente. Alguém saberia a explicação disso? Eu acho que tem a ver com o while não acabar nunca mas não tenho certeza disso. Grata.

<meta charset = "UTF-8">

<script>
    function mostra(frase) {
        document.write(frase);
        document.write("<br>");
    }
    function contador(num) {
        var num = 30

        while(num <= 40) {
             if(num != 33 && num != 37){
                mostra(num)
                num = num + 1;
            }
        }
    }

    contador();

    mostra("FIM")

</script>

OBS: tentei fazer dentro e fora de uma função e sempre trava, geralmente quando eu coloco aquele If, se eu deixar só com o while ele não trava.

OBS 2: a solução do instrutor funciona certinho, como eu não pensei antes em tentar daquele jeito!!! kkkk

1 resposta

Olá laura,

Removi a atribuição de num pq já será passada como parâmetro da função. Mudei a lógica do if para q se for um dos dois numeros (|| é o operador de OU) ele incremente o contador sem imprimir.

<meta charset="UTF-8">

<script>
  function mostra(frase) {
    document.write(frase);
    document.write("<br>");
  }

  function contador(num) {
    while (num <= 40) {
      if (num == 33 || num == 37) {
        num = num + 1;
      }
      mostra(num)
      num = num + 1;
    }
  }

  contador(30);

  mostra("FIM")
</script>