javascript闭包诡异的问题

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",

真是诡异!!

百思不得解? 闭包引起的??

原文地址:https://www.cnblogs.com/oxspirt/p/6523734.html