javascript学习笔记(八)-- 闭包

闭包的作用:

1.可以在函数的外部访问到函数内部的局部变量。
2.让这些变量始终保存在内存中,不会随着函数的结束而自动销毁。

运用实例理解闭包

function A() {
	var i = 0;
	return function B() {
		i++;
		return i;
	}
}

var C = A();
console.log(C()); //1
console.log(C()); //2
console.log(C()); //3
C = null;

在函数A中的内部变量除了能被A访问外,还能被函数A所包含的环境内所在的函数B访问(原理:javascript作用域链),既然函数B可以访问到A的内部变量x,那么我们将函数B作为函数A的返回值进行返回,在函数A的外部用一个C来接收这个值。C 就等于函数B ,那么在函数A外部操作C时,实际上就是操作函数B。而这个函数B是可以访问到函数A的内部变量的。所以函数A外部的C也可以反问函数A的内部变量。

这样就实现了函数外部访问函数内部变量的操作。

因为闭包的这个作用,也就有了另一个作用:被引用的内部变量将和C一同存在(因为函数B能访问函数A的内部变量),当函数A执行完后,这个内部变量不会被自动垃圾回收机制回收掉(函数A的结束执行不会影响到C,也就是内部函数B,所以函数B的环境一直存在,直到变量C被注销)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值