常见 闭包

<body>
  <!--

    1.将函数作为另一个函数的返回值
    2.将函数作为实参传递给另一个函数调用

  -->
  <script>
    //1.将函数作为另一个函数的返回值
    function fn1(){
      var a = 2
      function fn2(){
        a++;
        console.log(a)
      }
      return fn2
    }
    var f = fn1()  //闭包产生了
    f() //3     f是调用内部函数,不是外部函数
    f() //4
    //请问整个过程中创建几个内部函数对象?一个!!!  内部函数是执行函数,并不是创建函数
  
  //看闭包对象创建几个,就看你外部函数对象执行几次,因为创建外部函数对象,才会去创建内部函数对象,和内部函数执行几次没有关系,也就是和f()执行几次没有关系。因为执行外部函数时,执行了内部的函数定义,产生了变量。
    
   
//2.将函数作为实参传递给另一个函数调用

    function showDelay(msg,time){
      setTimeout(function(){
        alert(msg)
      },time)
    }
    showDelay('fds',2000)

    //内部函数function(){alert(msg)}闭包里面有msg,如果没有msg,就没有闭包


  </script>
  
</body>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值