js的问题啦啦啦

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是怎么用的,我想知道这里这么用的原因

西兰花伟大炮
浏览 1291回答 1
1回答

清枫_

因为var声明的变量默认会有函数提升,所以在for括号里面的变量就会提升到window,每次循环是重新给window.i赋值。bind这个问题 - -   我也不会。。。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript