美文网首页
函数执行——闭包

函数执行——闭包

作者: 莎氏笔丫 | 来源:发表于2020-06-15 10:50 被阅读0次

    什么是闭包?

    当函数可以记住并访问所在的词法作用域时,就产生了闭包,即便这个函数是在当前词法作用域外执行。

    在当前词法作用域内产生的闭包

    function fn1(){
      var name='fn1';
      function fn2(){
        console.log(name)
      }
      fn2()
    }
    fn1()
    

    在当前词法作用域外产生的闭包——fn1执行上下文已销毁,但fn3仍然能够访问到定义时的词法作用域

    function fn1(){
      var name='fn1';
      function fn2(){
        console.log(name)
      }
      return fn2
    }
    var fn3 = fn1()
    fn3()// 此时才调用fn2,也就是在词法作用域外执行
    

    在当前词法作用域外产生的闭包——将函数作为参数

    function fn1(){
      var name='fn1';
      function fn2(){
        console.log(name)
      }
      fn3(fn2)
    }
    function fn3(f){
      f()//在fn3函数中调用
    }
    fn1()
    

    总结

    在函数定义的时候就产生了词法作用域,在函数被调用的时候可以访问定义时词法作用域内的变量,无论函数是在词法作用域内部还是外部被调用,都产生了闭包。

    相关文章

      网友评论

          本文标题:函数执行——闭包

          本文链接:https://www.haomeiwen.com/subject/rgdgtktx.html