闭包(closure指有权访问另一个函数作用域中变量的函数。 ----- JavaScript 高级程序设计
简单理解就是 ,一个作用域可以访问另外一个函数内部的局部变量,这个局部变量所在的函数就是闭包函数
// 闭包 closure 指有权访问另一个函数作用域中变量 的函数
// 闭包:我们fun这个函数作用域 访问了另外一个函数 fn里面的局部变量 num fn()就是闭包函数
function fn() {
var num = 10;
function fun() {
console.log(num);
}
fun();
}
fn();
闭包作用:延伸了变量的作用范围。
闭包形成的原理:作用域链,当前作用域可以访问上级作用域中的变量
闭包解决的问题:能够让函数作用域中的变量在函数执行结束之后不被销毁,同时也能在函数外部可以访问函数内部的局部变量。
闭包带来的问题:由于垃圾回收器不会将闭包中变量销毁,于是就造成了内存泄露,内存泄露积累多了就容易导致内存溢出。
闭包的应用,能够模仿块级作用域,能够实现柯里化,在构造函数中定义特权方法、Vue中数据响应式Observer中使用闭包等。