- 闭包是什么?
闭包是一个外层函数,返回了一个内层函数,内层函数里面引用了外层函数的变量,导致外层函数调用后,被内层函数引用的相关变量没有被销毁。
这些没有被销毁的变量会被挂载到内层函数的[[Scopes]]属性上;
在碰到eval的时候,因为没法对它的引用做分析,所以它会打包整个作用域;
闭包的出现,是为了解决子函数晚于父函数销毁的问题;
- 闭包和堆、栈的关系?
因为内存函数上挂载了相关的变量存放在堆里面,而且还一直用不到,这样可能会导致内存泄漏。
- 哪些地方会产生闭包?
事件监听函数、回调函数、setTimeout、setInterval
- 闭包有什么用途?
防抖、节流、保存一些私有变量
- 相关资源