以下对闭包(closure)理解正确的有 ABCD
A
闭包是指有权访问另一个函数作用域中变量的函数;
B
函数内再嵌套函数,返回到外部形成闭包;
C
内部函数可以引用外层的参数和变量
D
参数和变量不会被垃圾回收机制回收
闭包的作用
1 可以读取函数内部的变量
2 可以把变量始终保存在内存中
闭包的写法
1 一个函数(即外部函数)里面包含另一个函数(即内部函数),并且return返回这个内部函数, 然后内部函数在定义内部函数之外的作用域被调
用,这时的内部函数就是一个闭包了。
2 内部函数引用了外部函数的变量,这个变量不会被销毁,因为闭包需要这个变量, 所以通过闭包可以访问闭包保存的变量
function foo(){
var n = 1;
function innerFoo(){
n += 1;
console.log(n);
}
return innerFoo;
}
var func = foo();
func(); // 产生闭包innerFoo(),变量n保存在内存中 func();
闭包的缺点 : 因为闭包的变量保存在内存中,内存泄漏,对内存的消耗很大,所以不要滥用闭包
闭包常用的地方:
1 es5 for循环事件监听
2 函数里使用了定时器
3 封装许多高级的功能集 减少闭包使用可以用立即执行函数传递变量
标签:闭包,closure,函数,内部,ABCD,内存,变量 From: https://www.cnblogs.com/longmo666/p/17825270.html