码迷,mamicode.com
首页 > 其他好文 > 详细

闭包以及其作用

时间:2017-12-08 01:18:28      阅读:9      评论:0      收藏:0      [点我收藏+]

标签:lis   机制   二次   例子   func   工作   fun   --   模块   

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;

 

闭包以及其作用

标签:lis   机制   二次   例子   func   工作   fun   --   模块   

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!