JS 全局对象 全局变量 作用域 (改自TOM大叔博文)

JavaScript通过函数管理作用域。

局部变量:在函数内部声明的变量是局部变量,只能在这个函数内部使用,函数外部不可用。

全局变量:在任何函数外面声明的变量;或是未经声明在函数内部直接简单使用的变量。

全局对象:每个JavaScript环境有一个全局对象,当你在适当的地方使用this的时候可以访问到。你创建的每一个全局变量都是这个全局对象的属性或数组元素。在浏览器中,为方便起见,该全局对象有个附加属性叫做window,此window(通常)指向该全局对象本身。

下面的代码片段显示了如何在浏览器中访问全局对象

<script>
  alert(this);  // output:[object Window]
</script>

<script>
  window.onload = function() {
    alert(this);  // output:[object Window]
  };
</script>

在函数内部,当局部变量与全局变量重名时,局部变量优先级高于全局变量,但不会在内存区域中覆盖全局变量:

<script>
  // 全局变量未经声明直接使用,不推荐此用法
  // var myGlobal = "hello"; 这是推荐用法
  myGlobal = "hello";         
  // 直接输出变量值
  alert(myGlobal);

  // 输出全局对象window的属性myGlobal
  alert(window.myGlobal);
  // 输出全局对象this的属性myGlobal
  alert(this.myGlobal);
  // 以数组方式输出
  alert(window['myGlobal']);
  // 以数组方式输出
  alert(this['myGlobal']);
</script>

下面的代码片段显示了如何在浏览器中创建和访问全局变量

<script>
  // 全局变量未经声明直接使用,不推荐此用法
  // var myGlobal = "hello"; 这是推荐用法
  myGlobal = "hello";         
  // 直接输出变量值
  alert(myGlobal);

  // 输出全局对象window的属性myGlobal
  alert(window.myGlobal);
  // 输出全局对象this的属性myGlobal
  alert(this.myGlobal);
  // 以数组方式输出
  alert(window['myGlobal']);
  // 以数组方式输出
  alert(this['myGlobal']);
</script>

posted on 2013-01-11 15:01  redasurc  阅读(1070)  评论(0)    收藏  举报

导航