- 43
- 0
var testVar;
for(var i=0;i<3;i++){
testVar=function(){
console.log(i)
};
}
testVar(); // 结果为3
let testVar;
for(let i=0;i<3;i++){
testVar=function(){
console.log(i)
};
}
testVar(); // 结果为2
testVar中的闭包中保存了i的引用,而不是i当前的值,而i值在最后一次循环结束后执行了一次i++变成了3。
但是let的for循环,最后一次循环,应该也是保存了i的引用,而这个i在最后一次循环结束后也应该执行一次i++,也应该变成3。但是输出为什么是2。
由于对闭包的理解不同,而闭包不是这个问题的重点,所以我又换了个方式重新提问,如下------------------------
testVar()返回的是这个函数被调用的时候的i值,用var的for循环,最后一次循环i值是2,由于被调用的时候循环已经结束,i值要进行一次i++,所以变成了3;
而let的for循环,理论上来讲,也是这样的过程,最后也要进行i++,为什么还是2?
1
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 10 元积分
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
