var 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 Greeters = []
for (var i = 0 ; i < 10 ; i++) {
Greeters.push(i)
}
Greeters[0] // 0
Greeters[1] // 1
Greeters[2] // 2
看了for循环问题和函数形参问题 这个提问 自己试了下,还不是很懂,
为什么第一段代码 是 10 10 10 第二段代码又变成了 0 1 2
求大佬 通俗点的解释,打个比方 举个栗子.
function () {console.log(i)}
的函数,那么执行的时候就会去找i,可是你又没有把i的值传进函数,函数内里找不到i的值,所以会去外面房子里找,这个时候i已经是10了。function () {console.log(i)}
塞到了一个小盒子里,执行的时候去找i,函数里没i的值,会在屋子里找到各自的i,所以分别是0-9。总结下就是:
改了答案,刚发现写着写着把小盒子的设定弄错了。