函数套函数--->作用域嵌套 在内部作用域调用外部的作用域
垃圾回收机制特点函数调用完回收,那么函数在被使用中不会被回收
当正常的函数在调用时立即执行,当执行完函数生命周期结束并销毁(垃圾回收机制),闭包利用垃圾回收机制(函数在被使用中不会被回收)的特点,能够让函数执行完毕时函数内部的空间保留。但会导致内存泄漏。
-
闭包的主要作用: 延伸了变量的作用范围,比如可以让全局作用域去访问函数内部定义的局部变量,变量的销毁时机还受内部函数影响。
-
应用场景:
- 函数防抖
- 函数节流
- 变量持久化(闭包中的变量不会被回收)
- 计数器
function fn1() {
let a = 100
return function() {
return a
}
}
fn1() 闭包:当调用完成时会被垃圾回收机制回收,但是a在内部函数中在使用那么垃圾回收机制不会回收
--------------------------------------------------
计时器:闭包使用场景
function count() {
let num = 0
return function() {
return num++
}
}