闭包——嵌套函数

function outer(){  //作用域1  window
			var i = 1;  //2
			return function() {//2
				console.log(i++); //3
			}
		}
		/*
			outer {
				i:1;
				function:匿名函数
			}
			出栈顺序:
			1、outer释放不了,内层函数不让释放; v(window)不让内层函数释放  闭包
			2、闭包是如何形成的:外层函数的作用域无法释放
		 */
		//这里最重要的就是要理解内外层函数什么时候才会释放,什么时候还没有被释放  内层如果未被释放,则外层也不会释放,释放顺序就是这样:先释放内部,后释放外面一层。
		//v的作用域可以捕获到i,window不可以
		var v = outer(); //这里返回一个函数,这个内层函数没有被释放,所以外层函数没有被释放
		console.log(v); //这里的输出表明外层函数调用后内层函数并没有被立即释放,所以外层函数没有被释放
		v(); //因为没有被释放,所以i还没有被释放  结果:1
		v(); //因为没有被释放,所以i没有被释放  结果:2
		//...
		//最后需要释放outer()函数吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值