闭包
- 利用了作用域的嵌套,将原本的局部变量,进化成私有变量,的环境,称为闭包
- 闭包将原本要删除的变量,临时保存起来,可以继续再次使用
- 闭包触发了计算机的垃圾回收机制(硬盘)
- 内存:程序结束(功能结束,函数结束)即删除
- 硬盘:不需要使用的文件或数据,先保存在回收站(临时空间)中,如需再次使用,可以从回收站中获取
- 函数的定义,函数的执行
- 函数的定义作用域:函数定义时所处的作用域
- 函数的执行作用域:函数执行时所处的作用域
- 规定:函数在执行时,可以获取到自身定义作用域中的数据或变量
function fn() {
let a = 10;
a++;
console.log(a);
}
fn();
fn();
fn();
; let fn = (
function () {
let a = 10;
return function fn() {
a++;
console.log(a);
}
}
)();
fn();
fn();
fn();
- 特点:
- 作用域内外部沟通的桥梁
- 可以在作用域外部操作作用域内部的数据
- 闭包浪费性能,占用内存
- 闭包会造成内存泄漏
- 场景
- 循环中的事件内,无法获取循环每次的计数器
- 给无法传参的内置函数的回调函数传参
setTimeout(fn('world'), 2000)
function fn(a) {
return function () {
console.log(a);
}
}