Anthony Fu @ antfu.me

JavaScript Closure-JS闭包

Apr 14 · 10min

JavaScript

闭包

闭包的定义

闭包(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机制会在适当时机释放内存。

>