var a = "hello";
b = "world";
Test();
function Test() {
alert(a + " " + b);
var a = "welcome";
b = "china";
alert(a + " " + b);
}
alert(a + " " + b);
解析:
var a = "hello";
b = "world";
Test();
function Test() {
var a=undefined; //因为函数里面有 var a关键词所以在函数的前面就会初始值为undefined
alert(a + " " + b); //a找到的是上面的undefined ,b找到的是function外面的world
var a = "welcome";
b = "china";
alert(a + " " + b); //a找到的是函数里面的welcome ,b找到的是函数里面的china
}
alert(a + " " + b); //a找的是全局的hello,函数里面的a是局部的找不到,b找的是china已经被函数中的 b = "china"给覆盖了这是声明全局变量
当函数里面有变量不管是声明在最前还是最后一旦有var都会先为变量赋值一个undefined,定义在最前面。 如果函数里面没有找到var的变量就会跑到函数外去寻找对应的。
这段代码分别输出的结果是:undefined world,welcome china, hello china.