一. 闭包:理解(1):就是一个函数,捕获作用域内的外部绑定(例如:不是自己的参数)。这些绑定是为之后使用(即使在该作用域已结束)而定义的。(不用var的变量是全局变量)
理解(2):闭包就是能够读取其他函数内部变量的函数(定义在一个函数内部的函数)。
(1)变量的作用域有两种:全局变量和局部变量;
由于在函数内部可以读取外面的全局变量,而外部的全局变量,不能读取内部的局部变量,所以就需要方法来实现。
例如:
function f1(){
var n=999;
return function f2(){
return n;
}
}
var result=f1();
// 999
由于要在外面得到发f1()里面的变量n,能从内部实现闭包进行得到。所以f2()就是上面说的闭包。
(2)闭包的用途:1、可以读取函数内的变量。2、就是让这些变量始终保存在内存中。
例如:
function f1(){
var n=999;
nAdd=function(){n+=1}
return function f2(){
console.log(n);
}
}
var result=f1();
result(); // 999
nAdd();
result(); //1000
通过这个可以看出f1()中的变量n,一直保存在内存中。不会被垃圾回收机制回收
(3)闭包的缺点:通过闭包使用的函数变量会一直保存在内存中,这样就会造成内存消耗很大,从而影响远行速率。所以要适当的使用闭包。
1442

被折叠的 条评论
为什么被折叠?



