1、什么是js闭包?
闭包的英文单词是closure,是指有权访问另一个函数作用域中变量的函数。
在本质上,闭包就是将函数内部和函数外部链接起来的一座桥梁。内层的函数可以使用外层函数的所有变量,即使外层函数已经执行完毕。
这是JavaScript中非常重要的一部分知识,因为使用闭包可以大大减少代码量,是代码看上去更加清晰等,功能十分强大。
2、闭包的优缺点?
优点:可以把局部变量驻留在内存中,可以避免使用全局变量。
缺点:也有占用更多内存的缺点,用完要及时让垃圾回收器回收,否则会占用更多内存。
闭包两种访问方式会有不同的结果,()()双括号访问方式会出错,先复制后的但括号方式是对的。
3、闭包相关知识点
常见的方式是在函数创建另一个函数
闭包的第一个用途:通过闭包可以访问局部变量
闭包的第二个用途:可以让局部变量的值始终保持在内存中
优点:可以把局部变量驻留在内存中,可以避免使用全局变量;全局变量在复杂程序中会造成许多麻烦(比如命名冲突、垃圾回收等),所以推荐使用私有的,封装的局部变量,而闭包可以实现这一点。
缺点:由于闭包里作用域返回的局部变量资源不会被立刻销毁回收,所以可能占用更多的内存,所以过度使用闭包会导致性能下降
来源:https://www.cnblogs.com/liutianchuan/p/10732028.html