Javascript für Schleife fehlt Mittelteil: Fehler oder fortgeschritten?

8

Ich bin dabei, das Javascript eines anderen Entwicklers für ein Projekt bei der Arbeit zu debuggen.

Ich bin wahrscheinlich ein Mid-Level-Javascript-Entwickler an einem guten Tag und ich bin auf eine for-Schleife gestoßen, die gebrochen erscheint:

%Vor%

Kann mir jemand sagen, ob das tatsächlich ein Fehler ist oder ob dies in einigen Fällen eine vollkommen gültige Methode ist, um fortgeschrittene Dinge zu tun?

    
timmackay 20.06.2012, 04:34
quelle

5 Antworten

4

Es ist OK und vollkommen legal. Jeder der drei Slots in einer for -Anweisung kann leer bleiben. Abgesehen von der Bedingung, die ich hinzugefügt habe, ist es logisch das gleiche:

%Vor%

Es wird eine Endlosschleife sein, es sei denn, es gibt einen Test irgendwo in der Schleife, der unter bestimmten Bedingungen eine break -Anweisung ausgibt, um die Schleife zu stoppen (ich habe einen Beispieltest zu meinem Codebeispiel hinzugefügt).

    
jfriend00 20.06.2012, 04:38
quelle
3

Das ist gültig. Jeder der drei Ausdrücke in der for-Schleife for(expr1; expr2; expr3) kann leer sein. Zum Beispiel ist for( ; ; ) dasselbe wie while(true) .

expr1 ist ein Ausdruck, der unmittelbar vor dem Start der Schleife ausgeführt wird. Sie können auch eine Variablendeklarationsanweisung anstelle eines Ausdrucks haben, den Sie in Ihrem Code haben.
expr2 ist ein Ausdruck, der direkt vor jeder Iteration der Schleife ausgeführt wird, und wenn der Wert des Ausdrucks ist falsy die Schleife ist fertig. Wenn der Ausdruck weggelassen wird, wird dies als truthy betrachtet.
expr3 ist ein Ausdruck, der direkt nach jeder Iteration der Schleife ausgeführt wird.

Die Anweisung, die Sie haben, ist im Wesentlichen eine while(true) -Schleife (die irgendwo eine break -Anweisung enthalten sollte, die die Anzahl der Wiederholungen mit der Variablen i zählt.

    
Paulpro 20.06.2012 04:37
quelle
1

Es ist ein gültiger Ansatz eine Endlosschleife mit einem inkrementierenden Zähler zu tun. Ob das absichtlich oder nicht ist eine ganz andere Sache, weshalb ich persönlich bin gegen die Verwendung von for-Schleifen in ungeraden Fällen. Kommentar würde natürlich Probleme mit einer solchen Verwendung beheben, obwohl

    
Jani Hartikainen 20.06.2012 04:37
quelle
1

Es ist vollkommen in Ordnung, solange innerhalb der Schleife eine break -Anweisung steht.

Wenn es keine break-Anweisung gibt, wird die JavaScript-Laufzeit weiterhin den Code in der Schleife ausführen, immer und immer wieder, wobei "i" wächst und wächst und wächst. Bald wird "ich" eine Nummer größer als alles andere werden; größer als die Anzahl der Legos, die das reiche Kind, das Sie in der Schule kannten, sogar in seinem Spielzimmer hatte. Es wird an der Zahl vorbeikommen, die größer ist als die Anzahl der Ameisen auf der Welt, dann die Anzahl der Starbucks, dann die Anzahl der Wassermoleküle im Ozean. Irgendwann fragt der Browser vielleicht, ob Sie das Skript anhalten wollen. Wenn Sie aber neugierig sind, wenn Sie die Art von Person sind, die das Unbekannte erforschen möchte, dann lehnen Sie das Angebot ab und lassen es los. Bald wird der Wert von "Ich" wahrhaft astronomische Werte erreichen, und die Dinge werden interessant werden. Erinnerst du dich daran, wie in 2001 A Space Odyssey Dinge seltsam geworden sind, als der Kerl in Jupiter oder was auch immer eingesaugt wurde? Nun, es könnte so sein.

Probieren Sie ein Spiel aus.

    
Pointy 20.06.2012 04:36
quelle
0

Eine Schleife hat eine einfache Syntax:

  1. Variablendeklaration = & gt; i = 0
  2. Loop-Eingabe-Check = & gt;
  3. Eine weitere Schleife erstellen = & gt; i ++

Weil JavaScript für nichts zurückgibt (korrigiere mich, wenn ich falsch liege), ist der Loop-Eingabe-Check immer wahr .

Dies ist überhaupt keine gute Übung. Daher glaube ich fest daran, dass dies ein gebrochener Code ist. Ich habe nie ein Beispiel für eine Endlosschleife je Design gesehen.

    
Saeed Neamati 20.06.2012 04:41
quelle

Tags und Links