1
resposta

Erro de código

Encontrei um exercício para JS com a descrição "Faça um programa que entre com cinco números e imprima o quadrado de cada número." Consegui gerar os números e multiplica-los, mas por algum motivo, os números sempre usam o primeiro que foi gerado, para multiplicar os demais. Alguém sabe me dizer o por que?

<meta charset="UTF-8">

<script>

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

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

function geraNumero(numero){

    var numero = Math.round(Math.random()*10)
    mostraTexto(numero + " vezes ele mesmo é igual a " + numero * numero);

}

geraNumero(numero);
geraNumero(numero);
geraNumero(numero);
geraNumero(numero);
geraNumero(numero);


</script>
1 resposta

Eu não sou experiente no assunto, mas acho que você sei onde você está errando.

Ao definir a função geraNumero você pede que seja passado o parâmetro numero, que não é utilizado na função, pois logo em seguida você declara a variável número e lhe atribui um valor randômico.

E ao chamar a função geraNumero você passa uma variável não declarada (até aí tudo bem), sem qualquer valor atribuído.

Da forma como você colocou, na primeira vez que a função é executada ela retorna um valor para a variável numero, que será usado fora da função e repassado toda vez que você chamá-la, por isso o primeiro valor é utilizado nas demais instâncias da função.

Seu código deve funcionar se você remover a variável que quer passar na declaração da função geraNumero e na hora de chamar a função também.

Desse jeito:

 function geraNumero(){

                var numero = Math.round(Math.random()*10)
                mostraTexto(numero + " vezes ele mesmo é igual a " + numero * numero);

            }

            geraNumero();
            geraNumero();
            geraNumero();
            geraNumero();
            geraNumero();

Forte abraço e bons estudos.