closure
一、什么是闭包?
闭包是一个函数和加上创建这个函数的作用域(块级或函数作用域)的连接。
使用闭包将关闭这个作用域的自由变量,在调用结束后无法自由离开环境,暂时不会被销毁
二、闭包的作用:
1:存储 : 让一个局部变量存储到局部作用域中,任何时间都可以访问(这一点像全局变量。但全局变量因为任何地方都可以访问,因此不够安全,很容易在不经意间被修改)
2:保护 : 存储的局部变量不能被随意访问,因此起到保护作用
三、闭包实现原理:
1:作用域和作用域链:变量存在引用的关系
2:js垃圾回收机制:变量不能被回收
四、闭包形成条件:
1:函数套函数(块级套函数)
2:子函数使用了父函数声明的变量
3:子函数必定可以在任意时间调用(最重要)
#闭包变量,永远只能通过子函数调用来访问.
五、闭包的优缺点:
优点:可以解决无意间共享环境
缺点:滥用闭包会导致内存的泄露
不只是函数里return一个函数,当使用for循环给元素加事件时也会产生闭包(let声明的循环变量i将会被保存起来)
闭包的问题本质上是作用域链的问题,在一千个人眼里有一千种闭包

浙公网安备 33010602011771号