闭包:就是可以读取到其他函数内部的变量的函数。
(有权访问另一个函数作用域中的变量的含数)(就是拿到本该不属于他的东西);
闭包其实就是携带状态的函数,并且它的状态可以完全对外隐藏。
自己理解:程序的代码段允许存在一级函数并且一级函数不能被释放,一级函数没有释放之前,外部可以使用一级函数的局部变量。
进一步理解 : 闭包就是外部可以使用局部变量。
作用:
闭包可以用在许多地方,他的最大用处有两个:
1.可以读取函数内部的变量;
2.让这些变量的值始终保存在内存中;
闭包的功能:
1、外部可以使用局部变量。
2、使函数不能释放。
缺点:
1.外部会修改局部变量
2.会大量占用内存
3.内存不会被释放
闭包有个需要注意的问题:
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。
小练习:
闭包返回局部变量以及使用局部变量实现数值的累加
function create_c(){ var x=0; return function(){ x++; alert(x); } } var c1=create_c(); c1(); //1 c1(); //2