Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Boa noite! Pode me explicar pq isso dá errado ? Acredito que esteja dando um looping pq meu navegador para de funcionar

<meta charset = "UTF-8">

<script>

    function pulaLinha() {

        document.write ("<br><br>");

    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();

    }

    var numero = 30;
    var limite = 40;

    while(numero <= 40){
      if (numero == 33 && numero == 37) {
        numero = numero + 1
      }
      else {
        mostra(numero);
      }
      }
      mostra("FIM");

</script>
1 resposta
solução!

Oi João, tudo bem?

Antes de analisarmos o porque de estar dando esse erro, precisamos trocar o operador lógico && (AND) pelo || (OR) no seu if.

Aqui a condição está como:

se numero for igual a 33 E numero for igual a 37, faça {...}

if (numero == 33 && numero == 37) {
    numero = numero + 1
}

Perceba que essa condição nunca será verdadeira, pois o número jamais terá o valor de 33 e 37 ao mesmo tempo. Para resolver isso, trocamos o operador && pelo ||. Dessa forma, a condição ficará assim:

se numero for igual a 33 OU numero for igual a 37, faça {...}

if (numero == 33 || numero == 37) {
    numero = numero + 1;
}

Bom, voltando ao tópico principal.

O motivo para o programa estar entrando em um loop infinito está no else:

if (numero == 33 || numero == 37) {
        numero = numero + 1;
}
else {
    mostra(numero);
}

Perceba que o if está incrementando o numero, enquanto que dentro do else, só está sendo exibido o numero e nada mais, fazendo com que o programa nunca saia do else. Então vamos incrementar dentro dele também, dessa forma após imprimirmos o número na tela, iremos para o próximo:

if (numero == 33 || numero == 37) {
        numero = numero + 1;
}
else {
    mostra(numero);
    numero = numero + 1;
}

Acredito que após essas duas pequenas mudanças, o seu código vai rodar do jeito que você quer!

Bons estudos!!