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

(已解决)js书上碰到一个疑问,来请教下

(已解决)js书上碰到一个疑问,来请教下

潇潇雨雨 2019-04-27 22:20:05
//已解决,自己看的不仔细[衰]在javascript高级程序设计里有这么一个例子://为了实现result=[0,1,2....]functioncreatefunctions(){varresult=newArray();for(vari=0;i
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

应该是这个原因,你可以运行试一下
functioncreatefunctions(){
varresult=newArray();
for(vari=0;i<10;i++){
result[i]=function(num){
returnfunction(){
returnnum
}
}(i)
}
returnresult;
}
varfunArr=createfunctions();
console.log(funArr);
console.log(funArr[0]());
console.log(funArr[1]());
还有这一段
functioncreatefunctions2(){
varresult=newArray();
for(vari=0;i<10;i++){
result[i]=function(num){
returnnum
}(i)
}
returnresult;
}
varfunArr2=createfunctions2();
console.log(funArr2);
console.log(funArr2[0]());
console.log(funArr2[1]());
虽然第二个会有预想的效果,但是第一种更加好
                            
查看完整回答
反对 回复 2019-04-27
?
慕沐林林

TA贡献2016条经验 获得超9个赞

按照这个写法,最后返回的result结果并不是[1,2,3...]。而是多个function。每个function返回改函数的下标。按照这个效果理解就可以明白为什么要闭包封装。为什么要在闭包里在return一个function了
                            
查看完整回答
反对 回复 2019-04-27
  • 2 回答
  • 0 关注
  • 536 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号