定义

​ 当内部函数引用了外部函数的变量,即使外部函数执行完毕,其作用域也不会被销毁,而是被内部函数保留。

特性

​ · 允许函数访问并记住其定义时的词法作用域。

​ · 在定义时确定作用域,而非执行时,内部函数可以访问外部函数的变量、参数和函数。

代码示例

1
2
3
4
5
6
7
8
function outer(){
let count = 0;
return () => {
console.log(++count);
}
}
outer(); // 输出1
outer(); // 输出2

优缺点

优点

​ 1.数据封装私有化:隐藏变量,只通过特定变量接口暴露操作;

​ 2.保留函数状态:可用于 计数器、缓存、防抖/节流函数;

​ 3.模块化开发:结合立即执行函数可以隔离作用域,避免全局污染。

缺点

​ 有内存泄漏风险:及时解除闭包引用,obj=null。