参考资料:
我从来不理解JavaScript闭包,直到有人这样向我解释它
JS 闭包经典使用场景和含闭包必刷题
闭包大白话解释
一个函数用到了外部的变量,那么这个函数加这个变量,就叫做闭包; 就是一个方法,可以使用方法体以外的变量,这个方法把方法体外的变量,装在方法的一个"背包"里,下次被调用时,这些"背包"里的变量仍然有效。
闭包的用途是什么?
可以让临时变量在外部函数生命周期结束时,仍然存在于内存之中。
闭包的缺点是什么?
容易导致内存泄漏。闭包会携带包含其它的函数作用域,因此会比其他函数占用更多的内存。过度使用闭包会导致内存占用过多,所以要谨慎使用闭包。
闭包举例
var n =100;
function fn(){
var n =20
function f() {
n++;
console.log(n)
}
return f
}
var x = fn()
x() // 21
x() // 22
x() // 23
fn()(); // 21
其中
var n =20
function f() {
n++;
console.log(n)
}
是一个闭包