掌握闭包closure (含义及优缺点)

个人认为闭包其实非常好理解,我们一起去认识什么是闭包。

在javascript脚本语言中,变量的作用域只有两种,一种是全局变量,一种是局部变量。

全局变量的函数可以在整个javascript脚本语言中被引用,但是局部变量只存在于声明这个变量的函数内部,外部函数无法访问。

也就是说局部变量可以访问外部变量,外部函数无法访问局部变量。

在js中,只有在声明这个变量函数内部的子函数才能读取局部变量。
所以当我们需要得到函数内的局部变量时,就只能在函数的内部再定义一个函数,且这个子函数不接受任何参数。这就是闭包。它是能够读取其他函数内部变量的函数,把函数内部和外部接连起来的一座桥梁

  闭包的用途:
1.可以读取其他函数内部的变量。
2.让变量的值始终保持在内存中。
  闭包的好处:
1.不增加额外的全局变量。
2.执行过程中所有变量都是在匿名函数内部。
  闭包的缺点:
1.闭包会使得函数中的变量都被保存在内存中,内存消耗大。
不能随意滥用闭包,否则会照成网页的性能问题,在IE中
可能会导致内存泄漏,解决方法是,在退出函数之前,把不使用
的局部变量全部删除
2.闭包会在父函数外部,改变父函数内部变量的值。
不能随便改变父函数内部变量的值。


原文:https://blog.csdn.net/DreamsTom/article/details/53857477 

原文地址:https://www.cnblogs.com/Antwan-Dmy/p/10716779.html