了解js的闭包

我们知道javaScript中变量可以是局部变量或者全局变量。函数可以访问由函数内部定义的变量,也可以访问函数外部定义的全局变量。但是我们在外部该怎么去访问到函数内部定义的函数呢,由此,我们就需要用到闭包。

首先:我们要知道闭包形成有三个必要条件:
(1) 一个函数A内部直接或者间接返回另一个函数B
(2) 函数B内部使用着函数A的私有变量
(3) 函数A外部有变量引用着函数B

function a() {
	var num = 100
	return function b() {
		console.log(num)
	}
}

var res = a()

闭包还有以下特点:(有利有弊)
(1) 延长了变量的声明周期
优点:变量会一直存在
缺点:需要一个不会销毁的函数执行空间,会一直存在内存中
(2) 可以访问函数内部的私有变量
优点:利用闭包函数可以访问函数内部的私有变量
缺点:执行空间不会销毁,会一直存在在内存中
(3) 保护私有变量
优点:保护私有变量不被外界访问
缺点:外界如果想访问私有变量,必须要利用闭包函数
由以上可以总结到:
当你需要延长变量的声明周期的时候,或者你需要访问某一个函数内部的私有数据的时候,你可以使用闭包函数来解决。但是当一段内存空间中有一个不会销毁的东西一直存在,就会出现内存占用,如果过多,就会导致内存泄漏,所以,要慎用闭包函数。

发布了7 篇原创文章 · 获赞 0 · 访问量 71

猜你喜欢

转载自blog.csdn.net/weixin_46389498/article/details/104461960