• 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函数,就是闭包。

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

    四、闭包的用途

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

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

  • 相关阅读:
    Vulkan Tutorial 06 逻辑设备与队列
    Vulkan Tutorial 05 物理设备与队列簇
    过滤器Filter(2)
    Filter过滤器(1)
    Java-Web监听器
    Filter案例
    <context:annotation-config/>
    @Autowired 和 @Resource
    Hibernate各种主键生成策略与配置详解
    eclipse新建workspace使用之前workspace的个性配置
  • 原文地址:https://www.cnblogs.com/liankong/p/9586082.html
Copyright © 2020-2023  润新知