闭包:
当一个函数的返回值是另外一个函数,返回的那个函数如果调用了其父函数的内部变量,返回的那个函数在外部被执行,就产生了闭包.
闭包是一个环境,具体指的就是外部函数–高阶函数 closure
闭包的三个特性
1:函数套函数
2:内部函数可以直接访问外部函数的内部变量或参数
3:变量或参数不会被垃圾回收机制回收 GC
闭包的优点:
1:变量长期驻扎在内存中
2:避免全局变量的污染
3:私有成员的存在
闭包的缺点:
常驻内存 增大内存的使用量 使用不当会造成内存的泄露.
闭包的应用场景:
1.setTimeout(定时器)
2.回调函数
3.封装私有变量
4.函数防抖节流
函数节流: 规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。
函数防抖: 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。