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)