闭包

闭包
作用:
1.延长变量生命周期
2.创建私有环境

let a=1
function fn(){
	let b=1
	return function(){
		return b
	}
}

当 fn()执行结束之后,b不会被回收,而是常驻内存,而且保存在一个私有的区域。
例如:在vue的data中就是一个闭包的设计
通过data为每一个组件建立一个私有空间(作用域),以达到a组件的数据与b组件的数据在单页面内互不干扰

建立私有空间保存下来之后,后续如何拿到(操作)?
例如:
既然是私有环境,就不能是随意改变操作的,只能是暴露什么,才能操作什么。

function fn(){
	let n=0
	function change(val){
		n+=val
	}
	return{
	//暴露三个方法
		add:function(){
			change(1)
		},
		reduce:function(){
			change(-1)
		},
		value:function(){
			return n
		}
	}
	
	let n1=fn()
	let n2=fn()
	
	n1.add()  //1
	n2.reduce() //-1
	console.log(n1.value())	//1
	console.log(n2.value())	//-1

通过闭包生成的n,互不影响,拥有各自的词法环境

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值