关于闭包

1.什么是闭包


闭包

答:函数xxx里面有一个变量a和一个函数yyy,函数yyy能够获取到变量a,

        函数yyy   与   函数xxx里面的变量a   就是一个闭包。



2.闭包的作用

想要了解什么是闭包,首先需要知道变量的作用域。就是JS中的全局作用域函数作用域

函数内部可以获取全局作用域的变量,反过来就不行。

同理,如果函数里面还有还有函数,那么里层函数能够获取外部函数作用域的变量,反过来就不行。

也就是说,父级作用域里面的变量对子级都是可见的,若子级想获取一个自身没有声明变量,就会逐级向上寻找,获取离自身最近的那个。而子级作用域的变量对父级就不见了。

综上所诉:

①,闭包能够让变量保存在内存中。因为内层函数对外层作用域变量的持续引用,所以在调用函数是能够保证变量保存在内存中不被回收。

②,能够让外层作用域访问到内层作用域的变量。

③,闭包能够隐藏(保护)一个变量。也就是说,你只能通过调用函数来操作变量,而不能通过其他途径去修改这个变量。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近看了js高级程序,书上对于闭包的解释是:''闭包是指有权访问另一个函数作用域中的变量''.我觉得过于抽象,经过...
    _三月阅读 3,552评论 0 14
  • 写这篇文章时的心情是十分忐忑的,因为对于我们今天的主角:闭包,很多小伙伴都写过关于它的文章,相信大家也读过不少,那...
    我是大橙阅读 2,540评论 0 1
  • 今天看到了一段关于闭包的文章,感觉挺好 挺有用的 我拿过来和大家分享一下,希望看到的小伙伴都能彻底理解闭包 =>...
    your_own_king阅读 2,224评论 0 2
  • 本文章著作权归饥人谷_Lyndon和饥人谷所有,转载请注明出处。 闭包对于我而言是一个难点,但闭包又是一个很有用的...
    HungerLyndon阅读 4,699评论 1 3
  • 1. 链接 : http://my.oschina.net/wupengnash/blog/482953 2. 链...
    K__M阅读 4,369评论 0 0