var funcs = []; for (var i = 0; i < 3; i++) { // let's create 3 functions funcs[i] = function() { // and store them in funcs console.log("My value: " + i); // each should log its value. }; } for (var j = 0; j < 3; j++) { funcs[j](); // and now let's run each one to see }
打印出3次相同的 "My value: 3";
但是诡异的事情发生了,当我分开敲代码,分开执行时,诡异的结果就发生了。
先敲第一段,再敲第二段;结果就不同了
第一段:
var funcs = []; for (var i = 0; i < 3; i++) { // let's create 3 functions funcs[i] = function() { // and store them in funcs console.log("My value: " + i); // each should log its value. }; }
第二段:
for(var i=0; i<3; i++){ funcs[i](); }
打印出3次不同的结果:"My value: 1", "My value: 2", "My value: 3",
真是诡异!!
百思不得解? 闭包引起的??