• 闭包(转)


      闭包是js里很重要的一块,很多高级应用都会用闭包去实现。
       闭包和js变量的作用域的关系很密切,变量的作用域分为全局变量和局部变量;
       从字面意思上看都知道全局变量的作用域比局部变量的作用域大,例如:

       

    var n=10;
    function F(){
    alert(n);
    }
    F();//10
    复制代码


      以上是全局变量的作用域;

    function  F(){
    var n=10;
    alert(n);//10
    }
    alert(n);// 报错
    复制代码


    以上是局部变量的作用域
    特别注意的是: 在函数内部如果没有使用var声明的变量也是全局变量哦。

    所谓闭包就是一个函数A能够读取函数B内部的变量的A函数(个人理解的哦);
    例如:

    function A(){
    var n=0;
      function B(){
       n++;
    alert(n);
    }
    return B;//这句很重要的哦!
    }
    var  obj= A();
    obj();//  1
    obj();//  2


    这段代码的特点是:
    1.函数B嵌套在函数A中;
    2.函数A返回函数B。
    以上代码可以帮助理解闭包,说实话,官方的话太难理解了。

    闭包的作用:闭包的作用就是在A执行完并返回后,闭包使得Javascript的垃圾回收机制GC不会收回a所占用的资源,因为A的内部函数B的执行需要依赖A中的变量。

    在上面的例子中,由于闭包的存在使得函数A返回后,A中的i始终存在,这样每次执行(),n都是自加1后alert出n的值。

  • 相关阅读:
    Mac 国内安装homebrew办法
    字符串方法及注释
    文件的操作
    集合
    Mac下CVS文件编码转换
    字符串格式化
    postman常用断言的一些内置方法
    get与post区别
    pygame知识点(持续更新)
    记录第一次使用
  • 原文地址:https://www.cnblogs.com/huangfenggu/p/4341597.html
Copyright © 2020-2023  润新知