10. 什么是闭包?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
  /*
    理解:什么是闭包?
      1.密闭的容器, 类似于set,map容器
      2.闭包是一个对象,存放数据的格式:key:value
    形成的条件:
      1.函数嵌套
      2.内部函数引用外部函数的局部变量
    闭包的优点:
      延长外部函数局部变量的生命周期
    闭包的缺点:
      容易造成内存泄露
    注意点:
      1.合理的使用闭包
      2.用完闭包要及时清除(销毁)
  */
  // 简单的闭包
  function fun(){
    let a=1;
    function b(){
      console.log(a);
    }
    b();
  }
  fun();
  // Global 全局的变量对象
  // Local 函数里面局部的变量对象

  //闭包的应用场景
  function fun(){
    let count=1;
    return function(){
      count++;
      console.log(count);
    }
  }
  var fun2=fun();
  fun2();   //2
  fun2();   //3

  /* 
    说说它们的输出情况
  */
  function fun(n,o){
    console.log(o)
    return {
      fun:function(m){
        return fun(m,n)
      }
    }
  }
  var a=fun(0)
  a.fun(1)
  a.fun(2)
  a.fun(3) //underfined,0,0,0
 
  var b=fun(0).fun(1).fun(2).fun(3)// underfined,0,1,2
  var c=fun(0).fun(1)
  c.fun(2)
  c.fun(3)// underfined,1,1
</script>
</body>
</html>

  

闭包 下面五段代码分别输出什么?

for( var i=0; i<5;i++){
    console.log(i)
}
//0,1,2,3,4
for(var i=0;i<5;i++){
    setTimeout(function(){
        console.log(i)
    },1000*i);
}
// 15 5,5,5,5,5
for(var i=0;i<5;i++){
    (function(i){
        setTimeout(funciton(){
            console.log(i)
        },i*1000);
    })(i);
}

for(var i=0;i<5;i++){
    (function(){
        setTimeout(function(){
            console.log(i);
        },i*1000);
    })(i);
}
//underfind  5,5,5,5,5
for( var i=0; i<5; i++){
    setTimeout((function(i){
        console.log(i)
    })(i),i*1000)
}
//0 ,1,2,3,4,0

  

 

转载于:https://www.cnblogs.com/Lolita-web/p/10456795.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值