闭包

闭包

一、是什么

闭包是指有权访问另一个函数作用域中的变量的函数。

function bibao(name) {
    return () => {
       console.log(`Hi! ${name}`)
    }
}
const test = bibao('zhangsan')
test() // Hi! zhangsan

虽然bibao函数已经执行完毕,但是其活动对象也不会被销毁,因为test函数仍然引用着bibao函数中的变量name,这就是闭包。

缺点:但也因为闭包引用着另一个函数的变量,导致另一个函数即使不使用了也无法销毁,所以闭包使用过多,会占用较多的内存,这也是一个副作用。

二、作用:利用闭包实现私有属性

const test = (function () {
    let value = 0
    return {
        getVal() { return value },
        setVal(val) { value = val }
    } 
})()

上面代码实现了一个私有属性 value,它只能用过 getVal() 来取值,通过 setVal(val) 来设置值。

原文地址:https://www.cnblogs.com/LcxWeb/p/14164512.html