日期:2014-05-16  浏览次数:20329 次

js闭包的一个小问题

如下 两段代码

function a(){
	var b = 1;
	
	window.setTimeout(function(){ //用定时器来触发就不搞按钮啦
		alert(b);
	},3000);
	
	
}
a();

function a(){
	var b = 1;
	
	window.setTimeout(function(){//用定时器来触发就不搞按钮啦

		alert(b);
		var b = 2;
	},3000);
	
	
}
a();


只差了一句,执行结果是什么样呢? 第一种,顺利弹出1

第二种确是 undefined

如何理解?


js会初始化用var 定义的变量导致第二个里边的b变量呗初始化局部变量,意思是b已经被释放了