var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[3](); // 10 (但是,我想要的结果是:3)
在不使用let的情况下,如何让其输出3呢?
然后这里考虑的是作用域的问题,因为var针对于全局,let可以针对于for内部。
所以可以使用闭包的方式来解决
var a = [];
for (var i = 0; i < 10; i++) {
(function(i){
a[i] = function () {
console.log(i);
};
})(i)
}
a[3](); // 3