什么是闭包?为什么要用闭包?

发布时间 2023-12-21 17:01:03作者: 坚持加上热爱

闭包就是能够读取其他函数内部局部变量的函数,简单来说就是函数嵌套函数,所有的嵌套函数都可以称为闭包;

举个代码例子:

function fn1() {
let num = 1;
return function fn2() {
return ++num;
}
}
let result = fn1();
console.log(result()); // 2
console.log(result()); // 3
console.log(result()); // 4
console.log(result()); // 5

 

为什么要用闭包?这里就涉及到JavaScript垃圾回收机制,如上代码中的变量num,当函数fn1执行并将函数fn2返回后,闭包使得Javascript的垃圾回收机制不会收回函数fn1里num变量所占用的资源(不会被销毁),因为fn1的内部函数fn2的执行需要依赖num变量,所以就出现了每次调用result,num就会自增一。当然过多的使用闭包内存泄露,会占用内存