关于JavaScript闭包的初步理解

104 阅读1分钟

参考资料:

我从来不理解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)
 }

是一个闭包