const Greeters = []for (var i = 0 ; i < 10 ; i++) {
Greeters.push(function () { return console.log(i) })
}
Greeters[0]() // 10
Greeters[1]() // 10
Greeters[2]() // 10为什么将var改成let就可以了,我知道let是块作用域另外改成Greeters.push( console.log.bind(null,i))也是可以的,我不想知道bind是怎么用的,我想知道这里这么用的原因
1 回答
已采纳
清枫_
TA贡献13条经验 获得超2个赞
因为var声明的变量默认会有函数提升,所以在for括号里面的变量就会提升到window,每次循环是重新给window.i赋值。
bind这个问题 - - 我也不会。。。
添加回答
举报
0/150
提交
取消