zoukankan      html  css  js  c++  java
  • js闭包

    一、变量的作用域

    Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。

    另一方面,在函数外部自然无法读取函数内的局部变量。

      function f1(){
        var n=999;
      }

      alert(n); // error

    二、如何从外部读取局部变量?

    出于种种原因,我们有时候需要得到函数内的局部变量。但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才能实现。

    那就是在函数的内部,再定义一个函数。(在上面的例子当中,在函数f1外无法访问到变量n的值,如果想要在函数f1外访问到变量n的值,需在函数f1内再定义一个函数f2,那么f2是可以访问到变量n的值的,再将函数f2返回出去,通过这种方法,那么就在函数f1外可以访问到变量n的值了,这里的函数f2就是一个闭包)

     

     function f1(){

        n=999;

        function f2(){
          alert(n);
        }

        return f2;

      }

      var result=f1();

      result(); // 999

    三、闭包的概念

    上面代码中的f2函数,就是闭包。

    在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

    四、闭包的用途

    一个是前面提到的可以读取函数内部的变量

    另一个就是让这些变量的值始终保持在内存中。

  • 相关阅读:
    TC2.0库函数大全
    【转帖】2004年度电影作品盘点之好莱坞篇
    C++文件流读写txt文件
    Linux 使用技巧
    最长字符串匹配算法(KMP算法)
    回调函数
    C#中对XML文件的一些基本操作[转载]
    指针与引用的区别
    中文核心期刊目录
    十大最考验演技的角色
  • 原文地址:https://www.cnblogs.com/liankong/p/9586082.html
Copyright © 2011-2022 走看看