1
resposta

[Dúvida] RangeError: Maximum call stack size exceeded

O seguinte comando não está exibindo as mensagens de acordo com as condições, qual o problema?

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        pulaLinha("<br>");
        pulaLinha("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    var vitorias = parseInt(prompt("entre com o número de vitórias."));
    var empates = parseInt(prompt("entre com o número de empates."));

    var pontos = (vitorias * 3) + empates;

    mostra("Os pontos do seu time é " + pontos);

    if(pontos < 28) {

        mostra("Seu time está pior do que ano passado.");
    }


## </script>
1 resposta

Oi Bruno, tudo bem?

Ao analisar o seu código percebi dois problemas. O primeiro é referente as duas hashtags colocadas juntamente com o fechamento da tag script (##</script>). Podemos corrigí-lo apagando as hashtags.

Já o segundo problema está na função pulaLinha(), onde no interior dela foi utilizado dois comandos pulaLinha("<br>") .

 function pulaLinha() {
        pulaLinha("<br>");
        pulaLinha("<br>");
    }

De modo que ao executar a função mostra() a primeira frase "Os pontos do seu time é " + pontos é mostrada e quando a função pulaLinha() é lida ela configura o erro Uncaught RangeError: Maximum call stack size exceeded, pois a função está sendo chamada no mesmo local onde ela deveria estar sendo definida. Podemos corrigir esse erro reescrevendo a função mostra(), utilizando a propriedade document.write()que irá escrever no documento HTML o que for inserido como parâmetro dentro dos parenteses. Desse modo, a função ficaria assim:

   function pulaLinha() {
        document.write("<br>");
        document.write("<br>");
    }

O código com todas as alterações seria escrito da seguinte maneira:

<meta charset="UTF-8">

<script>

    function pulaLinha() {
        document.write("<br>");
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var vitorias = parseInt(prompt("entre com o número de vitórias."));
    var empates = parseInt(prompt("entre com o número de empates."));

    var pontos = (vitorias * 3) + empates;

    mostra("Os pontos do seu time é " + pontos);

    if(pontos < 28) {
        mostra("Seu time está pior do que ano passado.");
    }

</script>

Espero ter ajudado. Caso tenha outras dúvidas, estarei à disposição!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!