闭包

闭包

概念:闭包就是函数嵌套函数,是一种将局部变量,进化成私有变量,可以在作用域的外部,修改或操作这个私有变量的环境
    (一旦内部函数调用外部函数的局部变量,那么这个时候,这个局部变量就会变成内部函数的私有变量)
    
原理:利用计算机的垃圾分类回收机制

垃圾回收机制:用过一次的东西,先放在一个内存中,不立即删掉,可以随时进行还原或再次使用,直到没有任何作用的时候再清除

特点:
    1.内存消耗大,不能滥用;        
    2.会在父函数外部改变父函数内部变量的值;
    3.将原本要删除的数据保存下来继续使用;

下面写一些简单的闭包案例:

  function fn(fun){
    var a = 10;
    a++;
    fun(a);
  }
  fn(function(res){
    res++;
    console.log(res);    //12
  })
  function fn(){
    var a = 10;
    return function(){
      a++;
      console.log(a);
    }
  }
  var f = fn();
  f();    //11
  f();    //12
  f();    //13

遇到setTimeout时

	setTimeout(function (a){
        console.log(a); //三秒后,undefined
    }, 3000);
    //或
    setTimeout(fn(10), 3000);
    function fn(a){
        console.log(a); //没有延迟,直接打印10
    }

	//闭包
    function fn(a){
      return function(){
        a += "world";
        console.log(a)
      }
    }
    setTimeout(fn("hello"),3000);   //3秒后打印helloworld

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值