Lösung für das Problem von var in einer for-Schleife

Lösung für das Problem von var in einer for-Schleife

Vorwort

var ist eine Möglichkeit, Variablen in ES5 zu deklarieren. Ich habe immer gehört, dass beim Deklarieren von Variablen mit var das Problem auftritt, dass Schleifenvariablen zu globalen Variablen durchsickern, aber ich kann die Auswirkungen dieses „Globalen“ nicht immer herausfinden. Darüber hinaus ist nicht klar, wann das Ausgabeergebnis ein steigender/fallender Wert ist und wann die Ausgabe der gleiche Wert ist.

Reproduktion des Problems

für (var i = 1; i <= 5; i++) {
  setTimeout(Funktion Timer() {
    Konsole.log(i)
  }, ich * 1000)
}

Erwartetes Ergebnis: 12345

Druckergebnis: 66666

Lösung

Verschlüsse

für (var i = 1; i <= 5; i++) {
    (Funktion (j) {
        setTimeout(Funktion Timer() {
            konsole.log(j)
        }, j * 1000)
    })(ich)
}

setTimeout dritter Parameter

für (var i = 1; i <= 5; i++) {
   setzeTimeout(
       Funktion Timer(j) {
           konsole.log(j)
       },
       ich * 1000,
       ich
   )
}

Verwenden Sie let, um i zu definieren

für (lass i = 1; i <= 5; i++) {
    setTimeout(Funktion Timer() {
        Konsole.log(i)
    }, ich * 1000)
}

lassen

Bezüglich let gilt: Das aktuelle i ist nur in dieser Schleife gültig, und i ist in jeder Schleife tatsächlich eine neue Variable.

Die JavaScript-Engine merkt sich intern den Wert der vorherigen Schleife und führt beim Initialisieren der Variable i dieser Schleife Berechnungen basierend auf der vorherigen Schleife durch.

Darüber hinaus verfügt die For-Schleife über eine weitere Besonderheit: Der Teil, der die Schleifenvariable festlegt, ist ein übergeordneter Bereich, und der Schleifenkörper ist ein separater untergeordneter Bereich.

für (sei i = 0; i < 3; i++) {
sei i = 'abc';
konsole.log(i);
}
//ABC
//ABC
//ABC

Zusammenfassen

Dies ist das Ende dieses Artikels zur Lösung der Probleme, die bei der Verwendung von var for-Schleifen auftreten. Weitere Informationen zu Problemen mit var for-Schleifen 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:
  • js for-Schleife, warum müssen wir var hinzufügen, um die Variable i zu definieren
  • Der Unterschied zwischen var und let in der jQuery-For-Schleife
  • Detaillierte Erklärung des Unterschieds zwischen let und var in der es6-for-Schleife

<<:  Entdecken Sie die Wahrheit hinter dem Neuladevorgang in Nginx

>>:  Detaillierte Erklärung des Codes zum Abfragen von Daten eines bestimmten Tages, Monats oder Jahres in MySQL

Artikel empfehlen

Eine kurze Analyse der Unterschiede zwischen px, rem, em, vh und vw in CSS

Absolute Länge px px ist der Pixelwert, also eine...

Detaillierte Erläuterung von acht Methoden zum Korrigieren des CSS-Seitenendes

Beim Schreiben einer Seite kommt es häufig vor, d...

MySQL-Interviewfragen: So richten Sie Hash-Indizes ein

Zusätzlich zu den B-Tree-Indizes bietet MySQL auc...

So verwenden Sie Vue3-Mixin

Inhaltsverzeichnis 1. Wie verwende ich Mixin? 2. ...

Tutorial zu den Grundlagen von JavaScript und JQuery Framework

Inhaltsverzeichnis 1. JS-Objekt DOM –1, Funktion ...

XHTML-Tutorial: Der Unterschied zwischen Transitional und Strict

Tatsächlich ist XHTML 1.0 in zwei Typen unterteil...

Detailliertes Tutorial zum PyCharm- und SSH-Remote-Access-Server-Docker

Hintergrund: Einige Experimente müssen auf dem Se...

Alibaba Cloud Ubuntu 16.04 baut IPSec-Dienst auf

Einführung in IPSec IPSec (Internet Protocol Secu...

Installieren Sie Docker für Windows unter Windows 10 Home Edition

0. Hintergrund Hardware: Xiaomi Notebook Air 13/I...

Grundlegendes Tutorial zur Steuerung des mobilen Roboters Turtlebot3 mit ROS

Chinesisch-Tutorial https://www.ncnynl.com/catego...

Tutorial zur Installation von MYSQL8.0 auf Alibaba Cloud ESC

Öffnen Sie das Verbindungstool. Ich verwende Moba...