概念
闭包是 函数 的一种 高级应用方式
主要目的 就是 操作调用使用 函数中的数据
本质原因:
为了数据的 安全性 也就是为了 防止全局变量污染
将 全局变量 定义在 函数中 称为局部变量
再 通过 闭包的语法形式 来操作调用使用 这个数据
闭包的核心代码
有一个函数A 返回值是一个匿名函数
在 函数A 之外 有变量 存储函数A的执行结果
也就是 返回的匿名函数
匿名函数 来 操作调用执行 函数A 中 存储的数据
最终调用使用变量 也就是 调用 匿名函数 也就是 操作 函数A中的数据
// 有一个函数 存储变量
// 让全局变量称为函数的局部变量
// 就不会被其他程序误操作,就不会全局变量污染
function fun(){
// 原始的全局 现在的局部变量
let int = 100;
// 返回值是一个 匿名函数
// 也就是 返回值是一个 引用数据类型
// 函数的执行空间就会一直存在不会被销毁
// 也就是 int变量 会一直存在
return function(){
// 函数程序就是对 变量的操作
int *= 2;
console.log( int );
}
}
// res 中 存储的是 return 的 匿名函数的内存地址
const res = fun();
// 调用 res 就是 在 调用 匿名函数
// 就是 执行 匿名函数中的程序 就是在 操作 变量int
res();
function f(){
int = '北京';
}
f(); //200
console.log(int); //北京
闭包的优点
(1) 延长了变量的生存周期
会占用内存空间
(2) 有一个不会被销毁的执行空间
容易造成数据泄露
(3) 函数的执行空间一直存在
影响程序的执行效率