JavaScript中的变量声明早于赋值
来源:未知 责任编辑:责任编辑 发表时间:2014-04-20 03:38 点击:次
如下
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 兼容 IE6、IE7、FF 的“加入收藏”“设为首页”
- 好好学一遍JavaScript 笔记(一)——基础中的基础
- 好好学一遍JavaScript 笔记(二)——encode、数组、对象创建
- 好好学一遍JavaScript 笔记(三)——StringBuffer、prototype
- 好好学一遍javaScript 笔记(四)——Attribute、HTML元素、文档碎
- 好好学一遍JavaScript 笔记(五)——正则表达式基础
- 好好学一遍JavaScript 笔记(六)——正则表达式基础二
- 好好学一遍JavaScript 笔记(七)——RegExp对象与常用正则
- 好好学一遍JavaScript 笔记(八)——冒泡型事件、捕获型事件
- JavaScript详解
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>