Olá, Yuri. Boa tarde! Tudo bem?
Vamos lá, espero conseguir te ajudar com sua dúvida.
Fiz os testes aqui com o seu código e fiz uma pequena alteração e vou te explicar o porquê.
O erro estava aqui:
if (contador == 33 && contador ==37) {
mostra ("empty");}
}
O que acontece, quando você insere os dois && (também conhecido como "E" comercial), você está dizendo para sua condicional que ela deve executar somente quando a variável contemplar as duas condições, ou seja somente se a variável tiver com os valores 33 e 37 que ela executaria. O ideal nesse caso é inserir o conectivo ou, pois ao passar pelo número 33 ou pelo número 37, ele contemplaria a sua condição. Caso queira ver mais sobre o assunto recomendo esse video: https://www.youtube.com/watch?v=GlVa3RA9tKI&t
Ah, antes que me esqueça, o seu código para funcionar ficaria assim:
<meta charset = "UTF-8">
<script>
function pulaLinha() {
document.write("<br><br>");
}
function mostra (frase) {
document.write(frase);
pulaLinha();
}
var contador = 30
while (contador <= 40) {
mostra (contador);
contador = contador + 1;
if (contador == 33 || contador ==37) {
mostra ("empty");
}
}
mostra ("FIM");
</script>
Só para lembrar, esse não é o único jeito de se fazer esse código, há várias maneiras de se fazer um código, o importante é a lógica por trás dele e seu funcionamento. Espero ter ajudado :)