zoukankan      html  css  js  c++  java
  • 闭包、立即执行函数

    function a(){
       var num = 0;
       function b(){
          num++;
          console.log(num)
       }
       return b;
    }
    var demo = a();
    demo();//打印第一次1
    demo();//打印第二次2
    a执行b定义,并被保存下来
    闭包通俗讲就是:内部函数通过return保存在外部了,
    闭包会导致原有作用域链不释放,造成内存泄漏。
    闭包的作用:
    1.实现公有变量;
    2.可以做缓存(存储机制);
    3.可以实现封装,属性私有化;
    4.模块化开发,防止污染全局变量;
    
    function test(){
      var num = 10;
      function a(){
        num++;
        console.log(num);  //11
      }
      function b(){
        num--;
        console.log(num);  //10
      }
      return [a,b];
    }
    var myArr = test();
    myArr[0]();
    myArr[1]();
    
    缓存例子效果;
    function a(){
      var list = "";
      var obj = {
            b:function(){
              console.log(111)
              list = "";
            },
            push:function(){
              list = myList;
            }
          }
          return obj;
    }
    
    var demo = a();
    demo.push("bob");
    demo.a();
    
    立即执行函数:执行后被释放;适合初始化工作。
    (function(){}());//w3c推荐第一种;
    (function(){})();
    传参是一样的,也一样有返回值;
    如:
    var num =(function(a,b,c){
      var d = a+b+c
      return d;
    }(1,2,3))
    
    num = 6;
  • 相关阅读:
    转:Spark User Defined Aggregate Function (UDAF) using Java
    同步类容器和并发类容器
    线程间通信
    线程安全
    浅入tomcat
    PLSQL操作excel
    Eclipse中使用Maven创建web项目
    PLSQL数据库操作(excel)
    Python学习-列表深浅拷贝
    Python学习-列表元组字典操作
  • 原文地址:https://www.cnblogs.com/lhl66/p/8001617.html
Copyright © 2011-2022 走看看