Heim >Web-Frontend >js-Tutorial >js-Verschlüsse und Schleifen
function box(){ var arr = []; for(var i=0;i<5;i++){ arr[i]=function(){ return i; } } return arr; } var b = box(); console.log(b.length); for(var i=0;i<b.length;i++){ console.log(b[i]()) }
Der obige Code gibt 5 5 aus
Da b[i]() eine anonyme Funktion aufruft, die anonyme Funktion sich jedoch nicht selbst ausführt, wird box( ) wurde ausgeführt. . . .
Ändern Sie Folgendes:
function box(){ var arr = []; for(var i=0;i<5;i++){ arr[i]=( function(num){ console.log("ccc="+num) return num; } )(i) } return arr; } var b = box(); console.log(b.length); for(var i=0;i<b.length;i++){ console.log(b[i]) }
Ausführungsergebnis:
num=0 num=1 num=2 num=3 num=4 5 0 1 2 3 4
Nach der Änderung führt sich die anonyme Funktion selbst aus, was zur endgültigen Rückgabe von b[i führt ] als Array. Keine Funktion mehr