闭包 #
闭包的定义 #
闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。
function fun(){
let name = 'Carlos'
return function getName(){
console.log(name)
}
getName()
}
函数fun中,定义了变量name和函数getName,getName可以使用函数fun中的变量name,它就是一个闭包。
闭包的使用场景 #
1.创造一个不受外部影响的作用域,作为私有属性来使用。 2.IIFE(自执行函数) 3.函数作为参数(回调函数) 4.将数据常驻内存(防止被GC)
闭包的清除 #
上述例子中,可以用fun=null,来清除闭包,GC机制会在适当时机释放内存。