闭包
能够访问其他函数内部变量的函数,被称为闭包。简单来说,闭包就是函数内部定义的函数,被返回了出去并在外部调用。
闭包作用
- 可以读取函数内部的变量
- 可以使变量的值长期保存在内存中,生命周期比较长。
- 可用来实现JS模块(JQuery库等)
其他知识点
js垃圾回收机制
javascript 内部的垃圾回收机制用的是引用计数收集:即当内存中的一个变量被引用一次,计数就加一。垃圾回收机制会以固定的时间轮询这些变量,将计数为 0 的变量标记为失效变量并将之清除从而释放内存。
详情看 V8引擎的垃圾回收 的总结
内存泄漏排查手段
内存泄漏
参考
- JavaScript深入之闭包
- 面试官:说说作用域和闭包吧
- 有权访问另一个函数内部变量的函数,我们称为闭包。闭包的本质是利用了作用域的机制,来达到外部作用域访问内部作用域的目的。
- 闭包的使用场景非常广泛,然而过度使用会导致闭包内的变量所占用的内存空间无法释放,带来内存泄露的问题。
- 我们可以借助于
chrome开发者工具查找代码中导致了内存泄露的代码。
- 避免内存泄露的几种方法:避免使用全局变量、谨慎地为
DOM绑定事件、避免过度使用闭包。最重要的,还是代码规范。 😃