深度剖析JavaScript闭包及其原理,有哪些优缺点?
JavaScript 闭包
JavaScript中的闭包(closure)是定义在函数内部的一种特殊作用域。它能够让函数访问其他函数中局部变量,即使当前函数不是以该变量为参数传递的,也可以保存其词法作用域并返回引用。
优点
- 可以让你创建沙盒/封装的形式将代码封装在其中,避免子函数对其周围的部分加以破坏
- 闭包也可以用来动态地创建“私有”变量,只有函数自身才可以访问,从侧面来看,也就是实现了数据的保护
缺点
- 闭包一直保持着外部函数中的局部变量的引用,这样内存消耗就会变大
- 太多使用闭包会降低代码的可读性,使得程序变得不容易理解