Skip to content

闭包

表现形式

方法里面返回方法

说说你对闭包的理解?

有权访问另一个函数变量的函数,闭包的本质就是作用域链的特殊应用场景。他的表现形式是方法里面返回方法

闭包的作用和使用场景?

  • 延长变量的生命周期:防抖
  • 创建私有作用域:vue的data
  • 沟通内外方法的桥梁:vhooks函数的封装,可以通过hooks去调用内部方法

闭包的原理

js是先进后出的原则,每个函数执行的时候都会先放到执行栈里,外部函数调用的时候先入栈,执行外面函数代码的时候,调用内部函数又要被压入栈,等到最顶层的内部函数执行完毕之后,出栈,外部函数才会释放内存出栈

闭包缺陷

闭包会常驻内存,导致内存溢出,不能滥⽤闭包

什么是作用域

当前正在执行的代码能够访问到变量的范围。

什么是作⽤域链

  • 表现形式:函数⾥⾯包着函数,内部函数访问变量的时候会从⾃身查找再 往上⼀级⼀级查找,就会形成⼀个作⽤域链
  • 查找规则:就近原则,先从⾃身查找,找到就输出,没有查找到再⼀层⼀层往 上从⽗级查找,直接查找到为⽌,类似原型链的查找

vue的Data为什么是一个函数不是一个对象

这就是一个闭包的设计,作用就是私有作用域,防止变量被污染