javascript 变量作用域 代码分析

  代码清单1-1 展示javascript的变量作用域的例子

  //设置全局变量foo,并置为"test"

  var foo = "test";

  //在if块中

  if(true){

  //将foo置为'new test'

  var foo = "new test";

  }

  //如我们所见,现在foo等于'new test'了

  alert(foo == "new test");

  //创建一个会修改变量foo的新函数

  function test(){

  var foo = "old test";

  }

  //然而在调用时,foo只在函数作用域内起作用

  test();

  //这里确认了foo 还是等于'new test'

  alert(foo == "new test");

  基于浏览器的javascript 的一个有趣的特性是,所有属于全局变量作用域的变量其实都是window对象的属性。

  代码清单1-2 javascript中全局作用域和window对象

  //一个全局作用域下的变量,存储了字符串'test'

  var test = 'test';

  //你可以看到我们的全局变量和window对象的test属性是一致的

  alert(test == window.test)

  最后如果变量没有显式定义,它就是全局定义的,虽然它可能只在这个函数作用域的范围内使用。

  代码清单1-3 隐式全局作用域的变量声明

  //一个设置了foo值的函数

  function test(){

  foo = "test";

  }

  //调用此函数以设置foo的值

  test();

  //我们发现foo现在是全局作用域下

  alert(window.foo == "test");