JS--闭包

112 阅读1分钟

1、如何产生闭包

嵌套在内部的(子)函数,引用了外部的(父)函数的变量或函数时,就产生了闭包。

function fn1(){
    var a = 2
    var b = 'abc'
    function fn2(){
        console.log(a) 
    }
}
1. fn2嵌套在fn1中,并且fn2中引用了fn1中的a变量,所以fn2形成了闭包
2. fn2中没有引用b变量,所以fn2形成的闭包中没有b
3. 执行函数定义就会产生闭包,不是必须调用内部函数才产生

2、闭包的作用

1)使用函数内部的变量在函数执行完后,依然存活在内存中(延长了局部变量的生命周期)

2)让函数外部可以操作到函数内部的数据(变量和函数)