//已解决,自己看的不仔细[衰]在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]());虽然第二个会有预想的效果,但是第一种更加好
慕沐林林
TA贡献2016条经验 获得超9个赞
按照这个写法,最后返回的result结果并不是[1,2,3...]。而是多个function。每个function返回改函数的下标。按照这个效果理解就可以明白为什么要闭包封装。为什么要在闭包里在return一个function了
添加回答
举报
0/150
提交
取消
