随身笔记
随身笔记

js作用域探讨

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.

http://kb.cnblogs.com/page/55178/

随身笔记

js作用域探讨
var a = "hello"; b = "world"; Test(); function Test() { alert(a + " " + b); var a = "welcome"; b = "china"; alert(a + " " + b); } alert(a + " " + b); …
扫描二维码继续阅读
2014-09-19