设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
关于闭包,实在没想清楚为什么出来是10? ...
返回列表
发新帖
关于闭包,实在没想清楚为什么出来是10?
[复制链接]
11
|
5
|
2021-1-27 06:18:48
|
显示全部楼层
|
阅读模式
分 -->
回复
使用道具
举报
千问
|
2021-1-27 06:18:48
|
显示全部楼层
数字里面每个元素是一个匿名函数,当你执行arr[6]里面的函数的时候,i的值这个时候已经实际变成了10了啊,因为循环早已经结束了。换言之,10个数组里面的函数,访问的都是同一个变量i,而不是10个变量,访问i的时候,i的值已经变成了10.
回复
使用道具
举报
千问
|
2021-1-27 06:18:48
|
显示全部楼层
输出10就是因为没有用闭包。原因楼上已经说的很清楚了。
解决方法也就是加上一居闭包,让每次循环都单独在一个闭包内产生一个i变量。
vararr=[]
for(vari=0;i
vararr=[]
for(vari=0;i
在你里面执行每次push进去一个函数的时候,直接调用这个时候,所得到的的就是你想要的值,循环完之后在调用,这个时候i已经是10,不管你调用的是arr[1]()....arr[6]都是10
回复
使用道具
举报
千问
|
2021-1-27 06:18:48
|
显示全部楼层
vararr=[]
for(leti=0;i<10;i++){
arr.push(i)
}
回复
使用道具
举报
千问
|
2021-1-27 06:18:48
|
显示全部楼层
蟹蟹朋友们的解答
回复
使用道具
举报
千问
|
2021-1-27 06:18:48
|
显示全部楼层
https://www.cnblogs.com/fly_dragon/p/8669057.html
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行