No código de Francisco o contador não está dentro da condição while pois é esse contador o responsável por somar todos os anos em que teve a copa, caso esse contador se mantenha fora do while será retornado um loop infinito. Assim o código ficou da seguinte forma:
var anoCopa = 1930;
var limite = parseInt(prompt("Qual é o ano limite?"));
while(anoCopa <= limite){
mostra(anoCopa + " tem copa!");
anoCopa = anoCopa + 4;
}
mostra("Ufa!Esses foram os anos de copa até " + limite);
Após o usuário digitar um ano, será verificado dentro do while se a variavel anoCopa(contendo o ano 1930) é menor ou igual ao ano que o usuário digitou(que esta armazenado dentro da variavel limite), caso retorne verdadeiro primeiro será invocado a função mostra() contendo a frase 'anoCopa + " tem copa!"' mostrando o ano inicial(1930) e somente depois será feito a soma,ou seja, esse ano inicial será somado com +4 e assim sucessivamente até que a condição dentro do while retorne falso quando retornar falso será invocado a função mostra() que esta fora do while contendo o parametro '"Ufa!Esses foram os anos de copa até " + limite'.