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

while

porque quando eu coloco o i++; antes do alert ele começa com valor 2 e quando coloco o i++, após o alert ele começa com valor 0?

6 respostas

Francisco, tudo bem? =)

Não sei se entendi sua dúvida... Se importa em reformulá-la? =)

Fábio

Francisco,

Bom dia,

Se puder também colocar o seu código, mesmo que simples, assim fica bem fácil para exemplificar o que está acontecendo.

<meta charset="utf-8">

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

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


    var i = 0;
    while(i <= 10){
        i++;
        alert( "O resultado é" + (2 * i));

    }
    }     



mostra("Fim");

</script>
primeiro eu fiz assim, e começou  já com valor 2.
<meta charset="utf-8">

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

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


    var i = 0;
    while(i <= 10){
        i++;
        alert( "O resultado é" + (2 * i));

    }
    }     



mostra("Fim");

</script>

assim começou com valor 2.

<meta charset="utf-8">

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

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


    var i = 0;
    while(i <= 10){

        alert( "O resultado é" + (2 * i));
        i++;
assim começa com valor zero. 

    }
    }     



mostra("Fim");

</script>
solução!

Francisco,

Bom dia

O que acontece é o seguinte, Quando você declara e inicializa o i ele tem o valor de 0 e se você imprimir o valor no alert ele já adicionou 1 ao i ( i++) e depois fez vezes 2 ( 2 * i), por isso no alert imprime 2. Se você ver o valor de i após o alert, digo usando um ponto de parada após o alert, ele deveria imprimir 1, pois esse é o valor de i na primeira passagem do loop. Se você olhar o valor de i antes de executar a linha i++, ele na primeira execução será 0 e após passar pelo i++, já se torna 1.

Veja se você consegue entender a minha explicação, qualquer coisa estou à disposição.

O meu código está assim e ele só imprime o alert com o número 2 10 vezes. Não entendi o que está acontecendo.

<meta charset="UTF-8">

<script>

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

    function mostra(frase) {

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

    var i = 0;
    while( i < 10){

    alert(" O resultado é " + (2 * 1) );

    i++;
}

</script>