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>
浙公网安备 33010602011771号