functioncreateFunctions(){varresult=newArray();for(vari=0;i
2 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
我不明白了,如果只是给result赋值,为什么要创建个闭包绕那么大个圈呢。其实就是个等于啊~functioncreateFunctions(){varresult=newArray();for(vari=0;i<10;i++){//直接赋值就好了,有什么好犹豫的呢?result[i]=i;}returnresult;}createFunctions();假如真的有需求在循环里创建闭包,正确的姿势如下:for(vari=0;i<10;i++){(function(i){//假设这是一个异步调用,会在未来某个时间回调传入的函数asyncCall(function(){//在这里可以安全的使用i//如果不这样写,这个闭包里面使用的i将始终是i的最终值:10});})(i);}
DIEA
TA贡献1820条经验 获得超2个赞
贴个完整的varresult=newArray();for(vari=0;i<10;i++){result[i]=(function(num){returnfunction(){returnnum;};})(i);}returnresult;一个function后面直接()执行,是没有意义的;要直接调用可以让左边成为一个表达式。比如:+function(){}();~function(){}();(function(){})();再次,你所要的闭包就是包含在函数内部的一个引用了自由变量被返回的一个function。
添加回答
举报
0/150
提交
取消