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

闭包与变量

闭包与变量

繁星coding 2019-03-30 09:28:16
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);
}
                            
查看完整回答
反对 回复 2019-03-30
?
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。
                            
查看完整回答
反对 回复 2019-03-30
  • 2 回答
  • 0 关注
  • 288 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信