美文网首页
关于闭包理解

关于闭包理解

作者: 我家有个王胖胖 | 来源:发表于2021-07-25 18:26 被阅读0次

    https://zhuanlan.zhihu.com/p/22486908

    https://zhuanlan.zhihu.com/p/106287246

    1.函数可以访问函数内部定义的变量,也可以访问函数外部定义的变量

    //内部
    function add(){
      var counter = 0;
      conuter++;
      return counter;
    }
    //外部
    var counter = 0;
    function add(){
      counter++;
      return counter;
    }
    

    2.函数内部的变量只能在函数内部访问

    function add(){
      var counter = 0;
      conuter++;
      return counter;
    }
    console.log(counter);//undefined
    

    注:counter 是一个 全局 变量。

    在web页面中全局变量属于 window 对象。

    全局变量可应用于页面上的所有脚本。

    在第一个实例中,counter 是一个 局部 变量。

    局部变量只能用于定义它函数内部。对于其他的函数或脚本代码是不可用的。

    全局和局部变量即便名称相同,它们也是两个不同的变量。修改其中一个,不会影响另一个的值。

    注意:变量声明时如果不使用 var 关键字,那么它就是一个全局变量,即便它在函数内定义。
    

    2.变量的生命周期

    全局变量的作用域是全局性的,即在整个JavaScript程序中,全局变量处处都在。

    而在函数内部声明的变量,只在函数内部起作用。这些变量是局部变量,作用域是局部性的;函数的参数也是局部性的,只在函数内部起作用。

    3示例,计数器困境

    设想下如果你想统计一些数值,且该计数器在所有函数中都是可用的。

    你可以使用全局变量,函数设置计数器递增:

    var counter = 0;
    function add(){
      counter += 1;
    console.log(counter);
      return counter;
    }
    add();//1
    add();//2
    add();//3
    
    

    相关文章

      网友评论

          本文标题:关于闭包理解

          本文链接:https://www.haomeiwen.com/subject/djnzultx.html