js闭包理解

什么是闭包?
这两天我在网上翻阅了大量的闭包理解博客,有优秀的也有生搬硬套的。归根揭底,还是理解的问题。
我曾经听老师讲闭包后,还是一脸疑惑,然后下课去网上查阅资料,仔细研究之后知道是里面要套一个函数返回父级变量。这次我就讲解一下个人理解的闭包。
为什么会出现闭包?
首先,我们先想下,我现在需要一个一直用的变量,放在全局中会造成全局污染,放在局部中呢,变量又不能被外部访问,有人可能会说为什么不能这样?

function a(){
	var a = 10
	return a
}
console.log(a())

``这样确实可以在外部得到变量,但是,你可能忽略了这样一点:函数在执行完会被销毁,那么里面的变量也会随之销毁
那么我们就只有用以下的写法

function a(){
	var a = 10;
	return function b(){
		return a;
	}
}
console.log(a()())



我们来分析下上面这个代码,在函数a中返回了一个函数b,此时函数b返回变量a,此时就相当于a父亲里声明的变量,交给儿子b去返回,这样导致函数在执行完的时候父亲a应该被销毁的,但由于儿子调用了a父亲中的变量,导致a父亲不能被销毁。这个变量就一直能被外部访问。

这样就能满足了我们的需求,而这就是闭包。
现在我们来说下什么是闭包?
闭包就是跨作用域(子级向父级作用域)访问变量.(这里的变量是可以一直访问不会被自动销毁)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值