• 【js闭包】


    js 闭包 一个函数内部函数引用这个函数,这个函数返回内部函数,这样就产生了闭包

    应用场景

    1)创建私有变量、私有方法

    2)在内存中维持一个变量的值

    一、变量的作用域
    要懂得闭包,起首必须懂得Javascript特别的变量作用域。
    变量的作用域无非就是两种:全局变量和局部变量。
    Javascript说话的特别之处,就在于函数内部可以直接读取全局变量。

    Js代码

    1.   var n=999;
    2.   function f1(){
    3.     alert(n);
    4.   }
    5.   f1(); // 999


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

    1.   function f1(){
    2.     var n=999;
    3.   }
    4.   alert(n); // error


    这里有一个处所须要重视,函数内部声明变量的时候,必然要用var。若是不用的话,你实际上声明了一个全局变量!
    Js代码

    1.   function f1(){
    2.     n=999;
    3.   }
    4.   f1();
    5.   alert(n); // 999


    二、如何从外部读取局部变量?
    出于各种原因,我们有时要获得函数内的局部变量。然则,前面已经说过了,正常情况下,这是办不到的,只有经由过程变通才能实现。
    那就是在函数的内部,再定义一个函数。
    Js代码

    1.   function f1(){
    2.     n=999;
    3.     function f2(){
    4.       alert(n); // 999
    5.     }
    6.   }


    在上方的代码中,函数f2就被包含在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。然则反过来就不可,f2内部的局部变量,对f1 就是不成见的。这就是Javascript说话特有的“链式作用域”布局(chain scope),
    子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。
    既然f2可以读取f1中的局部变量,那么只要把f2作为返回值,我们不就可以在f1外部读取它的内部变量了吗!

     

    1. Js代码
    2.   function f1(){
    3.     n=999;
    4.     function f2(){
    5.       alert(n);
    6.     }
    7.     return f2;
    8.   }
    9.   var result=f1();
    10.   result(); // 999

  • 相关阅读:
    docker常用命令
    js中正则的使用总结
    基于深度学习的车辆检测系统(MATLAB代码,含GUI界面)
    柔性电子数字源表测试方案
    为了安装alien,我更新了yum源,结果还是没装上
    EfficientViT:高效视觉transformer与级联组注意力
    Java实战:JSON文件到Excel文件的转换
    你还在找淘宝商品信息查询的接口吗?
    mybatis动态sql
    流量管制-令牌桶与漏桶
  • 原文地址:https://blog.csdn.net/m0_62336865/article/details/126964366