Slyh: Sinnloses JavaScript?!

Beitrag lesen

Hallo,

for (var i=0; i<(test.arguments.length - 1); i+=2)
   eval(test.arguments[i]+".location='"+test.arguments[i+1]+"'");

  • da i mit 0 initialisiert wird, ist die abbruch-bedingung immer erfüllt
  • das heisst: alles was er macht ist den rückgabeparamter auf false zu setzen

Nicht ganz. Die Abbruchbedingung ist erst dann erfüllt, wenn i >= test.arguments.length - 1 ist.
Stell dir eine For-Schleife am besten als While-Schleife. Nichts anderes macht der Compiler/
Interpreter nämlich letztendlich daraus.
Aus
      for (a; b; c) {
         code;
      }
wird
      a;
      while (b) {
         code;
         c;
      }

In diesem Fall wird aus der genannten for-Schleife folgendes:

var i = 0;
   while (i < test.arguments.length - 1) {
      eval(test.arguments[i]+".location='"+test.arguments[i+1]+"'");

i += 2;
   }

Also wird der Code in der While-Schleife so lange ausgeführt, wie i < test.arguments.length -1 ist.

Gruß
Slyh