为了账号安全,请及时绑定邮箱和手机立即绑定

js的问题啦啦啦

js的问题啦啦啦

西兰花伟大炮 2017-04-19 19:48:12
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这个问题 - -   我也不会。。。

查看完整回答
反对 回复 2017-04-20
  • ExiaGo
    ExiaGo
    其实bind就是和apply和call相似,但是bind不会立即输出,而是返回一个函数,我记得是这样,你需要的时候在输出。
  • 1 回答
  • 1 关注
  • 1261 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信