- 访问外部作用域变量:闭包总是能够访问其外部作用域中的变量,即使外部函数已经执行完毕,内部的函数依然可以访问到这些变量。
- 记住外部状态:即使外部函数已经返回,闭包中的函数依然可以"记住"它创建时的环境状态。
- 多次调用时的实例化:闭包通常用于多次调用时保持不同的实例。每次创建函数时,它都会保留不同的外部环境。
- 闭包的外部不一定要是函数,但它必须是能形成作用域的结构(函数作用域或块级作用域)。
-
最常见的闭包 发生在函数内部访问外部函数的变量,但
let
/const
形成的块级作用域也可以产生闭包。 - for 循环、事件监听、定时器、处理异步回调函数等 都经常用到闭包。
???? 核心记住:闭包 = 内部函数访问外部作用域的变量(作用域链)!