JS函数体内变量提升

 var a=1; 尽管作为全局变量在函数体外已经定义

但对于函数体,a是在其中的a的定义,即函数体内的var a=1; 才决定了a是属于函数的局部变量,因此全局变量a是在此失效的

而又由于a++的操作在局部var a定义之前

所以第一个alert(a)显示的是 NaN(注:详细说明如下)

第二个alert则是正确被赋值的,显示为 1

var a=1;
function test(){
	a++;
	alert(a);
	var a=1;
	alert(a);
}
test();

 

注:

全局属性 NaN 的值表示不是一个数字(Not-A-Number)。 

 NaN 属性的初始值就是 NaN,和 Number.NaN 的值一样。在现代浏览器中(ES5中), NaN 属性是一个不可配置(non-configurable),不可写(non-writable)的属性。但在ES3中,这个属性的值是可以被更改的,但是也应该避免覆盖。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值