VorwortWie wird die Js-Totschleife verursacht? Wenn wir beim Schreiben von Code nicht aufpassen oder etwas übersehen, schreiben wir tatsächlich eine Endlosschleife, wie im folgenden Code gezeigt: Wenn i++ nicht geschrieben wird, handelt es sich um eine Endlosschleife. Wenn Sie wissen möchten, welche Folgen eine Endlosschleife hat, können Sie es auch selbst ausprobieren. Eine Endlosschleife ist ein Stück JavaScript-Code, das aufgrund einer falschen Bedingung nicht beendet werden kann. Endlosschleifen sind gefährlich, da sie dazu führen können, dass die Umgebung, in der Sie Ihren Code ausführen (Browser oder NodeJS-Server), abstürzt oder Ihr Computer einfriert, sodass er nicht mehr reagiert. For- und While-Anweisungen sind eine häufige Ursache für Endlosschleifen. Dieses Tutorial hilft Ihnen daher zu verstehen, wie Sie durch diese Anweisungen verursachte Endlosschleifen erkennen und beheben können. Beginnen wir mit dem Beheben der Endlosschleife in unserer For-Anweisung. Endlosschleife in For-Anweisung behebenEine for-Anweisung kann eine Endlosschleife verursachen, wenn Sie im zweiten Ausdruck (im bedingten Ausdruck) versehentlich einen Zuweisungsoperator anstelle eines Vergleichsoperators einfügen. Es folgt ein Beispiel für eine for-Anweisung, die zu einer Endlosschleife führt. Beachten Sie, dass im zweiten Ausdruck i = 10 ist: für (sei i = 0; i = 10; i++) { console.log("Endlosschleife"); } Damit die for-Anweisung die Schleife beenden kann, muss der zweite Ausdruck als „false“ ausgewertet werden. Im obigen Beispiel wird der Zuweisungsoperator i = 10 als bedingter Ausdruck anstelle eines Vergleichsoperators wie i < 10 oder i > 10 platziert. Da der Zuweisungsoperator immer als „true“ ausgewertet wird, wird die for-Anweisung weiterhin eine „Endlosschleife“ auf der Konsole ausgeben, was zum Einfrieren Ihres Computers führen kann. Um die obige For-Anweisung zu korrigieren, müssen Sie den zweiten Ausdruck durch etwas ersetzen, das durch die For-Anweisung erreicht werden kann. Ein Beispiel ist die Verwendung von Vergleichsoperatoren ( =<, <, >, >=) // der zweite Ausdruck wird durch < ersetzt für (sei i = 0; i < 10; i++) { console.log("Endlosschleife"); } Es gibt eine andere Version desselben Fehlers. Diesmal führen der erste und der zweite Ausdruck zu einer Endlosschleife: für (sei i = 5; i > 0; i++) { console.log("Endlosschleife"); } Wie Sie dem obigen Code entnehmen können, wird die Schleife fortgesetzt, solange die Variable i größer als 0 ist. Da der Wert von i bei der Initialisierung bereits größer als 0 ist, wird der zweite Ausdruck immer als „true“ ausgewertet, was zu einer Endlosschleife führt. Um den obigen Code zu korrigieren, muss der dritte Ausdruck i dekrementieren, anstatt seinen Wert zu erhöhen: für (sei i = 5; i > 0; i--) { console.log("Endlosschleife"); } Ein weiteres Beispiel für eine for-Anweisung, die zu einer Endlosschleife führen kann, ist, wenn alle drei Ausdrücke innerhalb der Klammern wie folgt weggelassen werden: für (;;) { console.log("Endlosschleife"); } Der obige Code sollte jedoch nur mit Absicht geschrieben werden. Wenn Sie also nicht möchten, dass Ihr Computer abstürzt, sollten Sie ihn nicht in Ihren Projekten verwenden. Obwohl die von Ihnen geschriebenen For-Anweisungen sicherlich komplexer sind als die Beispiele oben, können Sie dennoch dieselben Prinzipien verwenden, um Fehler in For-Anweisungen zu finden und zu beheben. Zunächst müssen Sie sicherstellen, dass der zweite Ausdruck, den Sie in die For-Anweisung einfügen, tatsächlich als „Falsch“ ausgewertet werden kann. Wenn der zweite Ausdruck korrekt ist, beginnen Sie mit der Überprüfung des ersten und dritten Ausdrucks. Initialisiert der erste Ausdruck einen Wert, der immer als „true“ ausgewertet wird, wenn der zweite Ausdruck ausgeführt wird? Und schließlich: Erhöht oder verringert der dritte Ausdruck den Wert der im ersten Ausdruck initialisierten Variablen korrekt? Zusammenfassend: Überprüfen Sie zuerst Ihren zweiten Ausdruck und dann den ersten und dritten Ausdruck in dieser Reihenfolge. Als Nächstes lernen wir, wie man die Endlosschleife behebt, die durch die while-Anweisung verursacht wird. Endlosschleife in While-Anweisung behebenEine while-Anweisung kann eine Endlosschleife verursachen, wenn der bedingte Ausdruck in den Klammern immer als „true“ ausgewertet wird: während (wahr) { console.log("Endlosschleife"); } Um eine Endlosschleife zu verhindern, muss der bedingte Ausdruck der while-Anweisung als „false“ ausgewertet werden. Einer der häufigsten Fehler beim Schreiben einer While-Anweisung besteht darin, dass man vergisst, den Wert der im bedingten Ausdruck verwendeten Variable zu ändern. Beachten Sie, dass sich der Wert im folgenden Beispiel nie ändert: sei i = 0; während (i < 6) { console.log("Endlosschleife"); } Sie müssen den Wert von i im Hauptteil der while-Anweisung erhöhen, damit der bedingte Ausdruck bei Ausführung der Schleife als „false“ ausgewertet wird: sei i = 0; während (i < 6) { console.log("Endlosschleife"); ich++; } Unabhängig davon, wie komplex Ihre while-Anweisung ist, müssen Sie sicherstellen, dass der bedingte Ausdruck in den while()-Klammern als „false“ ausgewertet werden kann. Wenn Sie die Ursache der Endlosschleife immer noch nicht finden können, können Sie mit der Anweisung console.log() den Wert der vom bedingten Ausdruck verwendeten Variablen ausdrucken: sei i = 0; während (i < 6) { console.log("Endlosschleife"); ich++; konsole.log(i); } Das Konsolenprotokoll kann Ihnen dabei helfen, die fehlerhafte Codezeile zu lokalisieren und zu beheben. ZusammenfassenDies ist das Ende dieses Artikels zum Erkennen und Verhindern von JavaScript-Endlosschleifen. Weitere Informationen zum Erkennen und Verhindern von JS-Endlosschleifen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: So installieren und verwenden Sie Ubuntu Docker
>>: MySQL Multi-Instance-Bereitstellungs- und Installationshandbuch unter Linux
1. Laden Sie die VMware Workstation 64-Version he...
Vorwort MRR ist die Abkürzung für Multi-Range Rea...
Kommentare und Nachrichten waren ursprünglich ein...
Veranstaltungsbeschreibung onactivate: Wird ausgel...
Damit die Tabelle den Bildschirm (den verbleibende...
Aufgrund der Vorteile von GTID müssen wir die her...
Inhaltsverzeichnis 1. Datenbank-Master-Slave-Klas...
1. Installieren Sie MySQL: Verwenden Sie die folg...
serializable Serialisierung (kein Problem) Transa...
Redux ist ein einfacher Statusmanager. Wir werden...
In MySQL können alle Felder der Typen char, varch...
Vorwort Einige der früheren Codes auf Github erfo...
1. Laden Sie das Ubuntu16.04-Image und den entspr...
Inhaltsverzeichnis 1. Dateien mit Skript-Tags imp...
Inhaltsverzeichnis 1. Wechseln Sie zwischen Produ...