• 立即执行函数


    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;
  • 相关阅读:
    Swift -- 8.3 多态
    Swift -- 8.2 类的构造与析构
    Swift -- 8.1 继承
    Swift -- 7.6 构造器
    Swift -- 7.5 类型属性,方法
    Swift -- 7.4 方法,下标,可选链
    Swift -- 7.3 类和结构体
    Swift -- 7.2 枚举
    Swift -- 7.1 面向对象简介
    4-5轮选区的不透明度1.7
  • 原文地址:https://www.cnblogs.com/lhl66/p/8018173.html
Copyright © 2020-2023  润新知