var data = [];
for (var i = 0; i < 3; i++) {
data[i] = function () {
console.log(i);
};
}
data[0]();
data[1]();
data[2]();
循环创建一个方法组,然后依次调用,但要注意控制台输出的值都一样,这牵涉到闭包问题,正确的写法应该是:
for (var i = 0; i < 3; i++) {
data[i] = (function (num) {
return function() {
console.info(num);
}
})(i);
}
参考:https://www.jianshu.com/p/26c81fde22fb
你这个问题,和我刚回答的另一个问题一样的道理
https://ask.csdn.net/questions/1093316
你直接看我的回答