closure

一、什么是闭包?

  闭包是一个函数和加上创建这个函数的作用域(块级或函数作用域)的连接。

  使用闭包将关闭这个作用域的自由变量,在调用结束后无法自由离开环境,暂时不会被销毁

二、闭包的作用:

  1:存储 : 让一个局部变量存储到局部作用域中,任何时间都可以访问(这一点像全局变量。但全局变量因为任何地方都可以访问,因此不够安全,很容易在不经意间被修改)

  2:保护 : 存储的局部变量不能被随意访问,因此起到保护作用

三、闭包实现原理:

  1:作用域和作用域链:变量存在引用的关系
  2:js垃圾回收机制:变量不能被回收
四、闭包形成条件:
        1:函数套函数(块级套函数)
        2:子函数使用了父函数声明的变量
        3:子函数必定可以在任意时间调用(最重要)

  #闭包变量,永远只能通过子函数调用来访问.

五、闭包的优缺点:

  优点:可以解决无意间共享环境

  缺点:滥用闭包会导致内存的泄露

 

不只是函数里return一个函数,当使用for循环给元素加事件时也会产生闭包(let声明的循环变量i将会被保存起来)

 

 

闭包的问题本质上是作用域链的问题,在一千个人眼里有一千种闭包

posted @ 2021-04-08 11:29  源大大123  阅读(245)  评论(0)    收藏  举报