javascript中闭包是什么

作者: a333661d6d6e | 来源:发表于2018-10-29 17:47 被阅读2次

    javascript中闭包是什么

    javascript中闭包是什么

    JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。闭包就是将函数内部和函数外部连接起来的一座桥梁。

    函数的闭包使用场景:比如我们想要一个函数来执行计数功能。

    如果设计全局变量

    var counter=0; 2 function add(){ 3 4 return counter++;} 
    // add();
    

    在浏览器调用 add();//值为2

    问题是如何当我们设计另外一个方法时用到需要counter这个变量,我们在进行修改无疑会改变counter的初始值如下

    <script> var counter=0; function add(){ return counter++;} function plus(){
     return counter=5;
     }
     
     plus();
    </script>  
    //欢迎加入全栈开发交流群一起学习交流:864305860
    

    我们此时在调用add() 值就是6 所以设置counter变量为全局变量的时候我们调用函数会得到不想要的值;

    function add(){
    var counter=0;
    return counter++ ;
    }调用add()结果永远是0,函数运行到 counter=0;就覆盖变量;
    

    所以我们需要函数外部可以读取函数变量内部的值,下面就对函数进行了私有化 在 JavaScript 中,所有函数都能访问它们上一层的作用域

    JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。

    该实例中,内嵌函数 plus() 可以访问父函数的 counter 变量

     function add() {
     var counter=0 ;
     function plus (){
     counter++;
     }
     plus();
     return counter;
     }
    

    闭包的写法

    函数的立即执行()() 及函数的声明和函数的执行放在一起

    这就是闭包的最终格式

    var plus=(function add() {
     var counter=0;//定义为局部变量
     return function(){
     counter++;//
     console.log("counter"+counter);
     }
     })()
    

    调用plus() ;

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


    全栈开发交流群:864305860.png

    相关文章

      网友评论

        本文标题:javascript中闭包是什么

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