闭包
大约 1 分钟
闭包
闭包产生:内部函数对它上一层函数中的变量存在引用,这就导致之前变量的引用一直存在的没有消失的,这种情况下就产生了闭包。这种情况下由于它的引用一直存在没有被解除(JS垃圾回收机制回收)就会造成内存泄露。
作用定义:闭包就是能够读取其他函数内部变量的函数,或者子函数在外调用, 子函数所在的父函数的作用域不会被释放。
原理:作用域链,当前作用域链可以访问上级作用域中的变量
【三大特性】
- 闭包可以访问当前函数以外的变量
- 即使外部函数已经返回,闭包仍能访问外部函数定义的变量
- 闭包可以更新外部变量的值
【解决的问题】
保存变量,保护变量
【带来的问题】
内存泄漏;
【闭包的应用】
- 防抖节流
- 能够模仿块级作用域
- 能够实现柯里化
- 在构造函数中定义特权方法
- Vue中数据响应式Observer中使用闭包等