闭包
个人简单理解:
函数A返回函数B, B中有对函数A空间变量的引用, 当执行函数B时函数A空间变量一直存在,即闭包。基本形式: 一个返回函数的函数。
举例: 创建一个返回变量的函数, 每次生成的变量的id要不同
function initData() {
let i = 0;
return () => ({
id: i++,
name: ""
})
}
const addData = initData();
let dataList = [addData(),addData(),addData()];
console.log(dataList);
// 闭包函数执行的结果:
// [{"id":0,"name":""},{"id":1,"name":""},{"id":2,"name":""}]
- 内存问题
既然外层函数A的作用域一直被函数B引用, 会导致外层函数的作用域不会被释放, 就会导致内存泄漏问题
释放内存, 将外层函数A置空即可
initData = null;
网友评论