首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JavaScript中的变量宣言早于赋值

2012-08-29 
JavaScript中的变量声明早于赋值如下var a 3?实际有两个步骤:1 初始化a为undefined2 a赋值3?因此会出现

JavaScript中的变量声明早于赋值

如下

var a = 3;

?

实际有两个步骤:

1 初始化a为undefined

2 a赋值3

?

因此会出现一些“匪夷所思”的现象,即JS中变量可以先使用后声明。这在Java中是不允许的。

System.out.println(a);int a = 1;
?

编译通不过。但JS可以,如下

alert(a);var a;
?

?

虽然是undefined,但不会报错。说明a的确声明了,且为undefined。

?

如果只是“alert(a)”,没有“var a”的话JS引擎会报错的。

alert(a);

?

FF中如下

JavaScript中的变量宣言早于赋值

?

?

虽然可以先使用再声明,但这样会造成赋值的效果丢失。如下

alert(a);var a = 1;
?

这次输出的仍然是undefined而非1。

?

又如,

alert('a' in window); // truevar a;

?

?

虽然代码形式上写在alert后,引擎仍然先自动处理var的声明。最后输出的是true。

?

明白了这些就不难理解下面的代码运行结果了

if (!("a" in window)) {var a = 1;}alert(a);

热点排行