编程技巧 - 全局变量

本文导航

  1. 要点速读
  2. 正文
  • 作者:KK

  • 发表日期:2016.11.08


要点速读

  1. 变量第一次出现的时候如果没有用var关键字修饰就会自动变成全局变量

  2. 全局变量其实就是归属于window对象的属性


正文

以下测试代码让你了解全局变量是如何产生的:

<script>
var age = 18; //这是最外层的JS代码声明的变量,所以是全局变量
alert(age); // 18  这很正常,有变量就可以用嘛
alert(window.age); // 18    说明全局变量就是window的属性

window.alert(age); // 18    连alert函数都归属于window对象
alert(window.location.href); // 所以说,其实一切都是从window开始的

alert(window.xxx); // undefined 因为window目前没有这个属性
function test(){
	xxx = 'helo world!';
	var yyy = 'xixi';
}
test();
alert(window.xxx); // hello world!    懂了吧,test函数里第一次使用xxx变量时没有var关键字,于是xxx就成了全局变量
alert(xxx); // hello world!   简单地说就是当你使用一个变量,JS引擎从当前作用域找不到该变量时,就会去window里面找,由于是赋值语句,所以直接给window附加了个新的xxx属性并赋值了
</script>

  • 备注:由于时代变迁,现在的前端或多或少要接触node.js了,其实node.js也是用同样规则的JS引擎解析代码,所以全局变量的规则是一模一样的,然而在node里是没有window这种对象的,因为它不是浏览器,所以取而代之的是一个叫global的变量:
age = 111;
console.log(global.age); // 111
console.log(age); // 111