JavaScript 闭包

闭包 closure

引用了自由变量的函数(自由变量就是跨作用域的变量, 会一同存在即使离开也会)被外部访问

形成闭包条件(形成闭包的函数必须被外部变量引用(16),在函数中一定要访问外部函数的局部变量(10))

image.png

按理来说如果使用var let const在函数当中,此时就变为局部变量,只有在内部才能访问到。

并且当退出函数时就会随函数调用的结束而消失。

  var eat = function(){
    var food = 'cake'
    console.log(food)
  }
  eat(); // food
  console.log(food) // Uncaught ReferenceError: food is not defined

而我们闭包的函数在执行var look = eat()时反悔了匿名函数的引用,所以food就一直在环境中不会被销毁

所以我们在这里就可以引出闭包的第一个好处就是延续局部变量的生命周期

并且闭包可以帮我们把一些大函数的代码块独立出来。如果这些代码块不需要复用就可以用闭包封闭起来

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

推荐阅读更多精彩内容

  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    风萧萧易水寒_1196阅读 1,774评论 0 0
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zouCode阅读 5,011评论 0 13
  • javascript之闭包 闭包的概念     闭包(closure)是 JavaScript 的一种语法特性。 ...
    呦_小宋啊阅读 1,410评论 0 2
  • 前言 总括 :这篇文章使用有效的javascript代码向程序员们解释了闭包,大牛和功能型程序员请自行忽略。 译者...
    KX九五阅读 1,904评论 0 1
  • 昨天放假回家。 因为订的票比较晚,我就索性坐在候车室坐等,正是中午的时间,又刚经过一场考试,我昏昏的打不起精神,又...
    微吟相呷阅读 1,696评论 0 2