2016-04-23 6 views
-1

Ich frage mich, warum das Ergebnis des folgenden Codes 0 und nicht 3.JavaScript Schließungen und ein for-Schleife

var fn = function(){ 
    for (i = 0; i < 3; i++){ 
     return function(){ 
      console.log(i); 
     }; 
    } 
}(); 

fn(); 
+4

Weil Sie von der Schleife zurückkehren, Sie brechen aus ihm heraus. –

Antwort

1

Weil Ihre return Anweisung zwingt die Schleife zu beenden und die Funktion der Ausführung zu stoppen.

Sie können mehr über return Aussagen hier lernen - https://en.wikipedia.org/wiki/Return_statement

+0

Danke, ich habe es völlig übersehen und bin zu sehr darauf konzentriert herauszufinden, was eine Schließung ist. – Seyamack

1

Sie einen Verschluss der Rückkehr, die console.log Aufruf wird. Wenn Sie diese return Anweisung ausführen, stoppen Sie fn() von fortfahren, gibt es die erste Sache zurück, die zurückgeben und die Ausführung anhält. Entfernen Sie die Return-Anweisung (und das Schließen), wenn Sie console.log erstellen möchten. Siehe

var fn = function(){ 
    for (i = 0; i < 3; i++){ 
     console.log(i); 
    } 
}(); 

fn(); 

auch:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/return

Verwandte Themen