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

函数执行——闭包

作者: 莎氏笔丫 | 来源:发表于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()

总结

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

相关文章

  • 关于逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包当函数执行过程中,执行的函数内部的闭包,...

  • 3.逃逸闭包,非逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包:当函数执行过程中,执行的函数内部的闭包...

  • 闭包

    闭包: 就是函数嵌套函数,内部函数就是闭包正常情况下,函数执行完成,内部函数就会销毁,释放内存空间,闭包,内部函数...

  • 逃逸闭包和非逃逸闭包

    非逃逸闭包 闭包在函数返回之前执行。 逃逸闭包 逃逸闭包则恰恰相反,其生命周期长于相关函数。当函数推出时,逃逸闭包...

  • Python:闭包函数与装饰器

    闭包函数: 定义: 内层函数对外层函数非全局变量的引用,就叫做闭包函数。 闭包会一直存在内存当中,不会因为函数执行...

  • 面试题 闭包 继承 原型

    闭包 什么是闭包?闭包的作用?闭包的应用?答: 函数执行,形成私有的执行上下文,使内部私有变量不受外界干扰,起到保...

  • 廖雪峰JavaScript闭包、箭头函数

    闭包 闭包返回函数对象 闭包的调用不互相影响 实际结果全部返回16,原因,当执行函数时,i的值已经改变 返回闭包,...

  • javascript立即执行函数和闭包

    闭包 概念:当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链举例分析: 闭包的应用: 立即执行函数 ...

  • 函数执行——闭包

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

  • 闭包与装饰器

    闭包: 函数内的属性,都是有生命周期,都是在函数执行期间内部函数对外部函数作用域里变量的引用闭包内的闭包函数私有化...

网友评论

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

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