Js-闭包

「闭包」


    要理解什么闭包,首先要知道闭包为啥出现,实际代码中,我们想在某一的作用域中使用一个变量,很简单,直接在外部声明一个全局变量就好了,但是问题出现了,因为是全局变量,可能一不下心就让修改了,而且如果执行环境作用域比较深,作用链查找速度越慢,无疑造成性能的浪费。在es5中,也没有块级作用域的概念,此时闭包自然而然就出现了,注意看哦,我说的是自然而然,并非刻意设计,下面就是一个最简单闭包实例:

从执行结果上看,立即执行函数中的log执行了,但下面的log显示未找到变量的报错内容,报错的原因,在作用域链中,函数可以访问外部的变量,外部不能访问函数内的变量。这样就能拥有私有变量,「函数」和「函数内部能访问到的变量」(也叫环境)的总和也就是闭包了。

闭包简而言之,就是把变量变成私有物,只能自己使用,不让外人去窥觊,当然再拥有的同时,还能根据作用域链去访问外部的变量。




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

推荐阅读更多精彩内容

  • 闭包: 官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该...
    小裁缝sun阅读 650评论 0 5
  • 谈起闭包,它可是JavaScript两个核心技术之一(异步和闭包),在面试以及实际应用当中,我们都离不开它们,甚至...
    sponing阅读 737评论 0 7
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zock阅读 1,089评论 2 6
  • 定义 定义一:有权访问另一个函数作用域中的变量的函数。定义二:可以访问其被创建时所处的上下文环境的函数。 创建闭包...
    大橙子CZ阅读 345评论 0 0
  • 教育生态强调的是有机整体,除了学校教育、社会教育,更重要的是家庭教育。家人的教育语言和教育相关,往往影响甚至决定着...
    M橘子阅读 1,786评论 0 2