闭包
一、是什么
闭包是指有权访问另一个函数作用域中的变量的函数。
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)
来设置值。