闭包
表现形式
方法里面返回方法
说说你对闭包的理解?
有权访问另一个函数变量的函数,闭包的本质就是作用域链的特殊应用场景。他的表现形式是方法里面返回方法
闭包的作用和使用场景?
- 延长变量的生命周期:防抖
- 创建私有作用域:vue的data
- 沟通内外方法的桥梁:vhooks函数的封装,可以通过hooks去调用内部方法
闭包的原理
js是先进后出的原则,每个函数执行的时候都会先放到执行栈里,外部函数调用的时候先入栈,执行外面函数代码的时候,调用内部函数又要被压入栈,等到最顶层的内部函数执行完毕之后,出栈,外部函数才会释放内存出栈
闭包缺陷
闭包会常驻内存,导致内存溢出,不能滥⽤闭包
什么是作用域
当前正在执行的代码能够访问到变量的范围。
什么是作⽤域链
- 表现形式:函数⾥⾯包着函数,内部函数访问变量的时候会从⾃身查找再 往上⼀级⼀级查找,就会形成⼀个作⽤域链
- 查找规则:就近原则,先从⾃身查找,找到就输出,没有查找到再⼀层⼀层往 上从⽗级查找,直接查找到为⽌,类似原型链的查找
vue的Data为什么是一个函数不是一个对象
这就是一个闭包的设计,作用就是私有作用域,防止变量被污染