美文网首页
闭包的一点理解

闭包的一点理解

作者: _blank_myy | 来源:发表于2017-04-30 16:01 被阅读0次

参考http://www.jianshu.com/p/21a16d44f150 和《你不知道的JavaScript》

在闭包之前,对作用域有了解:

<strong>1.</strong>JavaScript中只有全局作用域与函数作用域(try...catch中catch是块级作用域,eval我们平时开发中几乎不会用到它,这里不讨论)。

<strong>2.</strong>作用域在编译阶段确定规则,作用域链在执行阶段确定(作用域链,是由当前环境与上层环境的一系列变量对象组成,它保证了当前执行环境对符合访问权限的变量和函数的有序访问)。

对闭包的定义:
<strong>当函数可以记住并访问所在的词法作用域,就产生了闭包,即使函数是在当前作用域之外执行。</strong>

简单来说,假设函数A在函数B的内部进行定义了,并且当函数A在执行时,访问了函数B内部的变量对象,那么B就是一个闭包。

闭包的特点:
<strong>1.我们可以在其他的执行上下文中,访问到函数的内部变量。</strong>

<strong>2.闭包会组织垃圾回收。函数的执行上下文,在执行完毕之后,生命周期结束,那么该函数的执行上下文就会失去引用。其占用的内存空间很快就会被垃圾回收器释放。可是闭包的存在,会阻止这一过程。</strong>

<strong>3.在闭包中,能访问到的变量,仍然是作用域链上能够查询到的变量。也就是函数声明位置的作用域链,不是调用位置的。
</strong>

相关文章

  • JavaScript 作用域闭包

    作用域闭包 启示 对于那些有一点 JavaScript 使用经验但未真正理解闭包概念的人来说,理解闭包可以看作是某...

  • Gradle开发-Groovy闭包

    # 闭包 闭包的基础知识 闭包的使用 闭包 this,owner,delegate 的理解 总结 ## 闭包的基础...

  • Swift5 闭包及其应用

    关于如何理解闭包 学习闭包的第一个难点就是理解闭包,可能很多人用了很久的闭包都还不太清楚闭包到底是什么,我这里提供...

  • 闭包的一点理解

    参考http://www.jianshu.com/p/21a16d44f150 和《你不知道的JavaScript...

  • 闭包的一点理解

    闭包 闭包就是可以让函数访问外部变量的函数,其本质就是一个函数,mdn说“函数与对其状态即词法环境(lexical...

  • 【js基础修炼之路】— 深入浅出理解闭包

    之前对于闭包的理解只是很肤浅的,只是浮于表面,这次深究了一下闭包,下面是我对闭包的理解。 什么是闭包? 引用高程里...

  • JS闭包理解

    闭包的概念 闭包就是能够读取其他函数内部变量的函数。 一、变量的作用域 要理解闭包,首先必须理解Javascrip...

  • 自动闭包/逃逸闭包/非逃逸闭包

    自动闭包、逃逸闭包和非逃逸闭包三个概念有些不好理解,这里按我自己的理解总结一下,不对的地方请指正 一、非逃逸闭包:...

  • 闭包理解

    这次我发现了个奇怪的问题,高程经典的闭包陷阱,竟然是把一个未执行的函数赋值给了一个数组项,当年的我太年轻,竟然没看...

  • 理解闭包

    什么是「闭包」。 「闭包」的作用是什么。在一个立即执行函数当中: 首先,假设以上几行代码运行在立即执行函数当中,那...

网友评论

      本文标题:闭包的一点理解

      本文链接:https://www.haomeiwen.com/subject/xnrxtxtx.html