JavaScript中的变量声明早于赋值分析
2012-03-01 00:00
671 查看
如下
实际有两个步骤:
1 初始化a为undefined
2 a赋值3
因此会出现一些“匪夷所思”的现象,即JS中变量可以先使用后声明。这在Java中是不允许的。
编译通不过。但JS可以,如下
虽然是undefined,但不会报错。说明a的确声明了,且为undefined。
如果只是“alert(a)”,没有“var a”的话JS引擎会报错的。
FF中如下
虽然可以先使用再声明,但这样会造成赋值的效果丢失。如下
这次输出的仍然是undefined而非1。
又如,
虽然代码形式上写在alert后,引擎仍然先自动处理var的声明。最后输出的是true。
明白了这些就不难理解下面的代码运行结果了
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中如下
虽然可以先使用再声明,但这样会造成赋值的效果丢失。如下
alert(a);
var a = 1;
这次输出的仍然是undefined而非1。
又如,
alert('a' in window); // true var a;
虽然代码形式上写在alert后,引擎仍然先自动处理var的声明。最后输出的是true。
明白了这些就不难理解下面的代码运行结果了
if (!("a" in window)) {
var a = 1;
}
alert(a);
相关文章推荐
- JavaScript中的变量声明早于赋值分析
- 分析 JavaScript 中令人困惑的变量赋值
- 分析 JavaScript 中令人困惑的变量赋值
- 分析 JavaScript 中令人困惑的变量赋值
- javascript中函数声明、变量声明以及变量赋值之间的关系与影响
- 分析 JavaScript 中令人困惑的变量赋值[转]
- javascript里if语句的小括号里不能声明变量并赋值
- JavaScript基础 声明一个整形变量并赋值,两个整形变量进行加法运算
- 关于javascript中的变量声明与赋值
- JavaScript基础 声明一个整形变量并赋值,两个整形变量进行加法运算
- Javascript 函数声明 的优先级 高于 变量声明的优先级,但 不会 覆盖变量赋值
- JavaScript中变量的声明和赋值
- javascript中函数声明、变量声明以及变量赋值之间的关系与影响
- JavaScript中函数声明优先于变量声明的实例分析
- JavaScript中的变量声明早于赋值
- JavaScript中对变量和函数声明的提前
- 为什么JavaScript声明变量的时候鼓励加var关键字
- 变量赋值($ @ %)和范围变量声明(my,our,local)