最高半折刷qq各种业务和钻(家里人自己开的,尽管放心,大家多捧捧场)

sking7

导航

javascript中变量的预解析

先看一段程序

var lastName = "Aut";
(function DisplayLastName() {
console.log(lastName);
var lastName = "Bru";
console.log(lastName);
})();//谁能猜出结果是什么?

感觉应该是

Aut

Bru

但结果是 undefined  Bru

为什么呢??

(function DisplayLastName() {
var lastName;
/*

var lastName(=undefined);
(不这么写,是因为undefined不是关键字,可能会被修改↓

var undefined='hello';
var udf;
var udf1=undefined;

null和undefined是不一样的}
*/
console.log(lastName);
lastName = "Bru";
console.log(lastName);
})()



这是因为:解释执行前,先做一遍预解析,给var变量赋值为undefined.

当局域变量有var时,这时lastName在函数内部作为局域变量存在。。

(如果上述函数中。var lastName=改为lastName=,结果就不一样了。。这时预解析时就不会作为局域变量,赋值为undefined)


posted on 2011-10-09 22:44  G.N&K  阅读(202)  评论(0编辑  收藏  举报