看了一篇闭包的,推荐一下~

https://cnodejs.org/topic/5d39c5259969a529571d73a8

闭包是可以访问另一个函数作用域的函数。由于 javascript 的特性,外层的函数无法访问内部函数的变量;而内部函数可以访问外部函数的变量(即作用域链)。

function a(){
	var b = 1;
	var c = 2;
	// 这个函数就是个闭包,可以访问外层 a 函数的变量
	return function(){
		var d = 3;
		return b + c + d;
	}
}

var e = a();
console.log(e());

因此,使用闭包可以隐藏变量以及防止变量被篡改和作用域的污染,从而实现封装。
而缺点就是由于保留了作用域链,会增加内存的开销。因此需要注意内存的使用,并且防止内存泄露的问题。

posted @ 2021-09-13 09:56  Mr、DIVE  阅读(27)  评论(0编辑  收藏  举报