Oi Ita, tudo bem?
Seu código não está funcionando pois ele entrou em um loop infinito! Vamos entender melhor o que acontece no while:
var contador = 20;
while(contador <= 20){
mostra(contador);
contador = contador - 1;
}
Veja que a sua condição do while é: contador <= 20, ou seja, se o número for menor ou igual a 20, ele sempre entrará nesse loop.
Agora, dentro do loop, você diminui a variável contador em -1, ou seja, contador será 19, 18, 17... assim por diante. Mas temos um problema aí, pois todos esses valores são menores que 20, ou seja, esse loop é infinito, nunca irá terminar.
Precisamos então, de uma condição que saia de fato desse loop. Por isso usamos:
var contador = 20;
while(contador >= 0){
mostra(contador);
contador = contador - 1;
}
Dessa maneira, o contador será subtraído em -1, até chegar em 0. Assim, o loop será finito, e não infinito, e não causará erros no seu programa.
Espero ter ajudado, bons estudos =)