美文网首页
浅析闭包

浅析闭包

作者: 海Annie | 来源:发表于2017-08-23 19:27 被阅读0次

概念:闭包 的英文解释是有“block”的概念,所以,闭包就是一个封闭的函数,这个函数的特殊之处在于,是外部函数返回的,并且持有外部函数变量的函数。通常内部return的函数是一个匿名函数。

在熟悉全局作用域和局部作用域的基础上,我们来分析闭包的简单案例


在上面的案例当中,fn2就是一个闭包函数,fn2也是一个具名函数,当调用fn1的时候,向外返回一个函数,将函数赋值给全局变量result,在返回的函数中用到了局部变量i,而承接它的时全局变量result,为了保证全局变量正常访问,返回函数中的局部变量并不会立即销毁,而是将周期延长,以达到调用全局变量正常执行的结果。

闭包的用处

1.用在for循环添加事件的bug中

当通过for循环为多个同级对象绑定事件的时候,因为事件for循环和事件绑定时异步的,事件在触发的时候才能触发相应的函数执行,此时i变量的值永远是徐娜换最后一次得到的结果

1.一般解决办法

定义对象的私有属性保存每次循环的变量。然后在函数中利用定的的变量。

2.闭包解决办法

首先定义自调用的匿名函数,将变量的值作为参数传到定义的闭包函数(匿名函数)中,当for循环开启之后,匿名函数会在代码执行到本行的时候执行自调用,为对象添加事件,并把每一次的变量值保存在自己开辟的内存空间中,达到保存每次变量值的目的,当触发事件的时候,就能触发事件绑定的函数来执行。

相关文章

  • 浅析闭包

    概念:闭包 的英文解释是有“block”的概念,所以,闭包就是一个封闭的函数,这个函数的特殊之处在于,是外部函数返...

  • js闭包浅析

    闭包的定义: 闭包就是能够读取其他函数内部变量的函数 什么时候使用闭包: 闭包可以用在许多地方,它的最大用处有两个...

  • JavaScript浅析 -- 闭包

    一、什么是闭包 关于闭包的解释有很多,而我个人理解的闭包,就是引用了局部作用域变量的函数。他由以下两部分构成: 可...

  • js闭包浅析

    背景知识 在讲闭包之前,下面几个概念需要先搞搞清楚: 执行环境 最外围的执行环境就是全局执行环境,在浏览器中执行环...

  • 浅析js闭包~

    用一句话说明什么是闭包,闭包就是一个函数可以调用另一个函数的变量。闭包有个特性就是当调用另一个函数的变量的时候,如...

  • js闭包浅析

    什么是闭包 「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。 有些人说闭包就是函数套函数,然...

  • swift-闭包

    闭包 闭包定义 闭包简化 - 尾随闭包 闭包参数 闭包返回值 闭包的循环引用

  • 浅析Javascript闭包的特性

    Javascript闭包的定义非常晦涩——闭包,是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身...

  • 闭包,闭包,闭包

    1、这家伙到底是什么? 网上关于这个的讨论的太多了太多了,有各种的举例子,但是大部分还在寻找这个答案的小伙伴对于变...

  • 闭包-Closures [swift 5.1]

    闭包的语法 尾随闭包 闭包逃离 自动闭包

网友评论

      本文标题:浅析闭包

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