一道非常基础的题。

一道题,很基础,暂时没什么文章可发,发这个吧。

var number = 2;
function getNumber() {
	return number;
}
var getNumber2 = ( function() {
	number = 4;
	var number;
	number = number * 2;
	return getNumber;
	function getNumber() {
		return number;
	}	
} )();
		
alert( getNumber2() );	
alert( getNumber()  );

在getNuber2中,因为变量声明提升的作用,var number被提升到嘴上,function getNumber(){xxx}为函数声明同样提升到嘴上,在return前执行,所以此处处理的是局部变量的number,赋值为4后再乘以2.然后return回来。
在getnumber中,因为是在全局作用域中执行所以取得是全局中的number变量。
我好无聊,分析这道题。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据