什么是javascript闭包_它怎样影响内存管理?

admin 百科 12
闭包是内部函数记住并访问外层函数词法环境的现象,需满足函数嵌套、引用外层变量、在外部被调用或保存三条件;它使本该回收的变量持续驻留内存,易致泄漏,应通过解除引用、避免捕获大对象、使用WeakMap等方式防范。

什么是javascript闭包_它怎样影响内存管理?-第1张图片-佛山资讯网

JavaScript闭包,简单说就是一个函数“记住了”它被定义时所处的词法环境,哪怕这个环境(比如外层函数)已经执行完了,它还能访问其中的变量。

闭包是怎么产生的

必须同时满足两个条件:

  • 存在函数嵌套,即内部函数定义在外层函数里面
  • 内部函数实际引用了外层函数的局部变量或参数(不只是声明,得用上)
  • 这个内部函数在外部被调用或保存(比如作为返回值、赋给全局变量、传给定时器等)

一旦满足,JS引擎就会为该内部函数保留一份对外层变量的“活引用”,这就形成了闭包。

闭包对内存管理的关键影响

闭包会让本该被回收的变量继续留在内存里,因为垃圾回收器发现这些变量“还有地方在用”,不能轻易释放。

标签: javascript java js 垃圾回收器 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~