2008-02-05
Javascript的陷阱
先看个实例:
这里有两个问题
1.为什么func1在声明前也可以运行
2.为什么alert(b)会显示未定义“undefined”
要解释这两个问题,只要知道两点就可以。
1.javascript在运行前会有预编译期,会把声明提前(不管这个生命是否真的会运行)
2.局部变量的优先权大于全局变量
所以这个代码的顺序应该是这个样子的
func1();
var a = "hello";
function func1(){
var b = "world";
b = a;
alert(b);
if(false){
var a = "hahaha";
}
}
这里有两个问题
1.为什么func1在声明前也可以运行
2.为什么alert(b)会显示未定义“undefined”
要解释这两个问题,只要知道两点就可以。
1.javascript在运行前会有预编译期,会把声明提前(不管这个生命是否真的会运行)
2.局部变量的优先权大于全局变量
所以这个代码的顺序应该是这个样子的
var a = "hello";
function func1(){ //方法声明放到前面
var b; //局部变量的所有声明都提前,
var a;
b = "world";
b = a;
alert(b);
if(false){
a = "hahaha"; //只有赋值的时候,才在真实的位置
}
}
func1();
- 11:45
- 浏览 (217)
- 评论 (0)
- 分类: Javascript
- 相关推荐
发表评论
- 浏览: 11607 次
- 性别:

- 来自: 黑洞

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
打破时间的束缚(转)
我对以下方面有一些疑虑:1、如何降低协作的成本、加快沟通的速度?2、是否每个人的 ...
-- by outrace -
打破时间的束缚(转)
weiqingfei 写道ouspec 写道这样做会使协作成为问题,比如大家需要 ...
-- by zerker -
打破时间的束缚(转)
ouspec 写道这样做会使协作成为问题,比如大家需要同时来做一件事情的,同时在 ...
-- by weiqingfei -
打破时间的束缚(转)
这样做会使协作成为问题,比如大家需要同时来做一件事情的,同时在线沟通是很重要的。 ...
-- by ouspec -
打破时间的束缚(转)
他们这样做是对的,工作业绩是以成果论的,这是所有工作的共同特点。 只不过表现形式 ...
-- by flyingbug






评论排行榜