JavaScript-Abschlüsse vs. anonyme Funktionen
In JavaScript tritt ein Abschluss auf, wenn eine innere Funktion Zugriff auf die Variablen des äußeren Bereichs hat, auch danach Die äußere Funktion hat die Ausführung abgeschlossen. Viele Funktionen in JavaScript gelten als Abschlüsse, aber theoretisch ist nur eine bestimmte Teilmenge von besonderem Interesse.
Fall 1: Friend's Code
<code class="js">(function f() { var i2 = i; setTimeout(function g() { console.log(i2); }, 1000); })();</code>
Fall 2: Ihr Code
<code class="js">setTimeout((function f(i2) { return function g() { console.log(i2); }; })(i), 1000);</code>
Schlussfolgerung
Daher ist die innere Funktion g in beiden bereitgestellten Lösungen ein Abschluss, aber nicht die äußeren. Dies zeigt, dass sie zwar das gleiche Ergebnis erzielen, dies jedoch über unterschiedliche Mechanismen.
Das obige ist der detaillierte Inhalt vonIst eine innere Funktion in JavaScript immer ein Abschluss?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!