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();
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();
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
Danke, ich habe es völlig übersehen und bin zu sehr darauf konzentriert herauszufinden, was eine Schließung ist. – Seyamack
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
Weil Sie von der Schleife zurückkehren, Sie brechen aus ihm heraus. –