zoukankan      html  css  js  c++  java
  • 彻底搞懂闭包

    ---恢复内容开始---

    1、闭包的定义

    官方的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境表达式(通常是一个函数),因而这些变量也是这些表达式的一部分。相信很多人看完这个很难懂,其实在不懂之前我也看不懂。先看一段代码:

    function a(){
            var i=0;
            function b(){
                alert(++i);
            }
            return b;
        }
        var c=a();
        c();

     这个函数有两个特点:1、函数b嵌套在函数a内部;2、函数a返回函数b。

    执行完var c=a()后,变量c实际上是指向函数b,再执行c()后就会弹出一个窗口显示i的值(第一次为1)。

    当函数a的内部函数b被函数a外部的一个变量引用的时候,就创建了一个闭包。

    2、闭包的作用

    简言之,就是a执行完并返回后,闭包使得js的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。这是最直白的描述。虽然很不专业。由于闭包的存在,使得函数a返回后,a中的i始终存在,这样每次执行c(),i就会自动加1后弹出值。

    ---恢复内容结束---

  • 相关阅读:
    Android开源框架——Volley
    Android中的事件传递机制
    @ViewDebug.ExportedProperty的使用
    字符间距——扩展
    读取assets文件夹下图片(ods_interview)
    Android消息推送——JPush极光推送
    深入模块
    正则表达式和re模块
    初识模块
    迭代器和生成器
  • 原文地址:https://www.cnblogs.com/shj-com/p/6716397.html
Copyright © 2011-2022 走看看