Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Tem problema a variável ficar fora do for?

Eu fiz esse código, mas pra mim fica mais fácil identificar as variáveis quando elas estão fora, mesmo no for! Tem algum problema?

<meta charset="utf-8">
<script>

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

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

    var num = parseInt(prompt("Digite o número que você quer obter a tabuada!"));
    var cont = 1;

    for(cont; cont <= 10; cont++){
        result = num * cont;
        mostra(num + "x" + cont + "=" + result);

    }


</script>
4 respostas

Problema não tem, até porque o JavaScript clássico não tem o conceito de escopo de bloco que outras linguagens mais elaboradas (Java, C#, etc) possuem.

Porém é uma boa prática que variáveis que são utilizadas num determinado escopo, seja declarada dentro do mesmo, até porque em JavaScript mais moderno, ao invés de utilizar var você provavelmente utilizaria let, que por sua vez possui só será visível dentro do escopo a qual foi declarada, tal como é feito na maioria das linguagens.

Então minha sugestão é declarar dentro do for.

Espero que ajude.

Oi Rafael o que não é pra ser repetido não deve ficar dentro do for mesmo, no caso se você colocar o cont dentro do for ele sempre vai ser 1, está correto inicializá-lo fora.

Espero ter ajudado e bons estudos.

solução!

Considero mais correto neste caso a inicialização dentro do for, já que cont só tem sentido existir no escopo do for, então o código ficaria:

    for(var cont = 1; cont <= 10; cont++){
        result = num * cont;
        mostra(num + "x" + cont + "=" + result);
    }

Att.

Perdão Rafael, eu não havia entendido a questão, pra mim era outra questão..., realmente seria melhor você declarar a variável cont na declaração do for não que seja obrigatório mas o torna mais legível, além do que essa variável realmente só é útil nesse escopo, como o Eduardo postou esse primeiro campo é justamente pra isso e como o valor inicial sempre será 1, não tem confusão seria até melhor você mudar o nome dele de cont para algo mais explicito como multiplicando ficando assim.

var multiplicador= parseInt(prompt("Digite o número que você quer obter a tabuada!"));

    for(var multiplicando=1; multiplicando <= 10; multiplicando++){
        produto = multiplicador * multiplicando;
        mostra(multiplicador+ "x" + multiplicando + "=" + produto);

    }

Espero ter ajudado e bons estudos.