javascript 中的闭包

闭包是一个很陌生的应用,在javascript中。至今在我的工作中从来没有看过,但是在看《javascript权威指南》的时候又一次看到闭包,渐渐开始对起了兴趣。不管有没有用先学会了再说。

我认为之所以在javascript中会产生闭包,最重要有两点:1.javascript是解释性语言,他的垃圾回收机制造成的。2.javascript是可以直接返回一个函数的。请看下面的代码:

function a(){
		var b=0;
		function c(){
			return b++;
		}
		return c;
	}
	var b=a();
	console.log(b());//0
	console.log(b());//1
	console.log(b());//2
	console.log(b());//3
	console.log(b());//4
	console.log(b());//5
	console.log(b());//6
	console.log(b());//7
	console.log(b());//8
	console.log(b());//9

 按照正常的逻辑,函数a执行结束后,变量b就应该被回收,可是函数c引用到了变量b,所以变量b一直都没有被回收掉。

这就是一个闭包,至于他有什么用,我现在还不知道。可能以后写代码的时候尽可能要避免这种用法,因为一个变量如果不被回收是要占内存的,所以我们还是应该减少这样的使用。但是如果你是个js高手就要另当别论了。

这就是我的理解,有什么错误欢迎高人指点一二。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值