1.2.3.18.了解閉包(二)
1 function buildFunctions() { 2 var arr = []; 3 for (var int i = 0; i < 3; i++){ 4 arr.push( 5 //Only create function 6 function () { 7 console.log(i); 8 } 9 ) 10 } 11 return arr[i]; 12 } 13 var fs = buildFunctions(); 14 //執行時會找到i 15 //印出3 16 fs[0](); 17 //印出3 18 fs[1](); 19 //印出3 20 fs[2]();1 function buildFunctions2() { 2 var arr = []; 3 for (var int i = 0; i < 3; i++){ 4 let j = i; //es6的語法 5 arr.push( 6 //Only create function 7 function () { 8 console.log(i); 9 } 10 ) 11 } 12 return arr[i]; 13 } 14 var fs2 = buildFunctions2(); 15 //執行時會找到i 16 //印出3 17 fs2[0](); 18 //印出3 19 fs2[1](); 20 //印出3 21 fs2[2]();1 function buildFunctions2() { 2 var arr = []; 3 for (var int i = 0; i < 3; i++){ 4 arr.push( 5 (function (j) { 6 return function() { 7 console.log(j); 8 } 9 }(i)) 10 ) 11 } 12 return arr[i]; 13 } 14 var fs2 = buildFunctions2(); 15 //執行時會找到i 16 //印出3 17 fs2[0](); 18 //印出3 19 fs2[1](); 20 //印出3 21 fs2[2]();
Last updated