发表于: 2017-05-03 09:24:25
1 952
今天完成的事情:复盘项目申请PPT完成,修改了angularjs任务的编辑功能,改为url传参,因为state.go传参会在页面刷新后失效,和大家一起讨论了闭包的概念
明天计划的事情:复盘项目原型图的熟悉,禅道的使用,参与项目评审
遇到的问题&收获:
闭包的理解,借用阮一峰教程上的例子说一下自己的理解:
function f1(){
var n=999;
nAdd=function(){n+=1}
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
nAdd();
result(); // 1000
在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此我认为可以把闭包理解成"定义在一个函数内部的函数"。
上面的例子里的f2()是一个闭包。他的值被赋予给了全局变量,0所以一直存在并可以被调用,而仅仅复制需要闭包的变量到闭包的变量对象去,
所以我认为可以这么理解闭包中数据的结果:
闭包过程不是保存整个过程的上下文,而仅仅复制需要闭包的变量到闭包的变量对象去,过程的上下文是被销毁掉的。
我们只需要关注闭包的数据和结果。
评论