Oi Ita, tudo bem? Bom dia!
O seu primeiro código gera um loop infinito, ou seja, o programa fica travado pois o while nunca para de executar. Mas por que isso acontece?
while(contador <= 100) {
mostra(contador + 2);
}
Veja que a única instrução para o loop é enviar para a função mostra o contador somado com 2. Mas esse contador nunca irá mudar, ele sempre continuará o mesmo. O contador começa com 0, correto? Então ele entrará no loop, já que 100 é maior que 0. E então, ele irá enviar para a função mostra o valor 2, já que 0 + 2 = 2.
E ele vai repetir essa instrução infinitamente, já que não adicionamos nenhum valor para o contador. Para ele não ter um loop infinito, precisamos fazer da seguinte maneira:
while(contador <= 100) {
mostra(contador);
contador = contador + 2;
}
Assim, nosso loop envia para a função mostra()
o contador, que no início será 0, e depois, ele acrescenta 2 unidades no contador, e envia novamente para a função mostra()
, mas agora com valor 2, e assim por diante, até ser maior que 100 e ele sair do loop!
Precisamos sempre estar modificando nossa variável em loops, se não ele se torna infinito e trava nosso programa.
Uma outra observação é que na sua função mostra(texto)
, em vez de exibir a variável texto que está sendo passada como parâmetro, você está exibindo um texto literal ("texto"). Para corrigir isso, sua função deve ser:
function mostra(texto){
document.write(texto);
pulaLinha;
}
Assim, mostraremos na tela apenas a variável recebida, que é a variável texto, e não um texto literal. Deu pra entender?
Espero ter ajudado, abraços =)