文章目录加载中
JavaScript基础-闭包
题目:解释下 js 的闭包
直接上MDN的解释:闭包是函数和声明该函数的词法环境的组合。
而在 JavaScript 中,函数是被作为一级对象使用的,它既可以本当作值返回,还可以当作参数传递。理解了:“Js 中的函数运行在它们被定义的作用域,而不是它们被执行的作用域”(摘自《JavaScript 语言精粹》) 这句话即可。
题目:闭包优缺点
闭包封住了变量作用域,有效地防止了全局污染;但同时,它也存在内存泄漏的风险:
- 在浏览器端可以通过强制刷新解决,对用户体验影响不大
- 在服务端,由于 node 的内存限制和累积效应,可能会造成进程退出甚至服务器沓机
解决方法是显式对外暴露一个接口,专门用以清理变量:
function mockData() {
const mem = {};
return {
clear: () => (mem = null), // 显式暴露清理接口
get: page => {
if (page in mem) {
return mem[page];
}
mem[page] = Math.random();
}
};
}
本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog
0