Caveman: zählerinkrementierung in scheife

hallo forum,

mir ist aufgefallen daß es in einer normalen for- schleife völlig egal ist, ob man mit ++i oder i++ arbeiteit. z.b.:

for (i=0; i<5; i++ bzw. ++i)
{
  document.write(i + '<br>');
}

falls das kein bug ist, kann mir das bitte jemand erklären.

  1. Da du im for Statement nicht mehr mit i rechnest, ist es wirklich egal.

    CYa
    GONZO

  2. Hallo Hoehlenmensch! ;-)

    mir ist aufgefallen daß es in einer normalen for- schleife völlig egal ist, ob man mit ++i oder i++ arbeiteit. z.b.:
    for (i=0; i<5; i++ bzw. ++i) {
      document.write(i + '<br>');

    »»  }

    falls das kein bug ist, kann mir das bitte jemand erklären.

    Nee, das ist kein Bug.

    Die For-Schleife
        for ([initializing]; [while-condition]; [statement]) {
            [for-block];
        }
    ist einfach nur eine andere Schreibweise fuer
        [initializing];
        while ([while-condition]) {
            [for-block];
            [statement];
        }
    in Deinem Beispiel also
        i = 0;
        while (i < 5) {
            document.write(i + '<br>');
            i++ bzw. ++i;
        }

    Jetzt siehst Du sicher, dass i++ und ++i keinen Unterschied machen.

    Calocybe

    1. alles klar und vielen dank, Calocybe

      ist das höhere javascript-theorie oder so, denn in C lauten doch die regeln etwas anders - oder?

      1. Hi nochmal!

        ist das höhere javascript-theorie oder so, denn in C lauten doch die regeln etwas anders - oder?

        Nein, das ist pures C, dort ist es naemlich ganz genauso. Genauer gesagt, ich weiss das nur, weil es dort so ist. JS hat das nur von C uebernommen.

        Calocybe

    2. hi Calocybe,

      Jetzt siehst Du sicher, dass i++ und ++i keinen Unterschied machen.

      haaalt, nicht ganz. (habe grade das schlaue Mintert-Buch aufgeschlagen ;-)

      also:

      a=5;
      b=++a;

      zuerst auf 6 hochzaehlen, danach b den wert 6 zuweisen.

      b=a++;

      b den wert von a, also 5 geben,_dann_auf 6 hochzaehlen.

      Naja, ist was fuer Theoretiker *grins*

      Viele Gruesse  Joachim

      1. Hi Joachim

        a=5;
        b=++a;
        zuerst auf 6 hochzaehlen, danach b den wert 6 zuweisen.
        b=a++;
        b den wert von a, also 5 geben,_dann_auf 6 hochzaehlen.

        Ganz richtig, aber bei der Vorschleife steht ja das i++ bzw ++i allein auf der Zeile. Es wird also einfach inkrementiert, ohne irgendetwas anderes (z.B. eine Zuweisung an b) zu machen. Da ist es dann egal, ob erst nichts gemacht wird und dann i inkrementiert, oder erst i erhoeht und dann nichts getan wird. *g* Genau darum ging es Caveman ja. Er dachte (vermutlich), dass bei ++i das i schon am Beginn der For-Schleife inkrementiert werden muesste.

        Naja, ist was fuer Theoretiker *grins*

        Och, man kann das auch praktisch anwenden. So kann man naemlich seine Befehle so komplex machen, dass jemand anderes fuer jede Zeile eine halbe Stunde braucht, um sie zu kapieren. ;-)

        Calocybe

        1. hi,

          Och, man kann das auch praktisch anwenden. So kann man naemlich seine Befehle so komplex machen, dass jemand anderes fuer jede Zeile eine halbe Stunde braucht, um sie zu kapieren. ;-)

          aber darin bist Du kein Meister, Dich kapiert man immer schneller *grins*

          Viele Gruesse Joachim