1.全局GO
“在全局执行上下文中”,带VAR和不带VAR定义值是两套不同的机制
-
1.带VAR是创建一个全局变量,存放在全局变量对象VO(G)中
-
2.不带VAR创建的不是变量,而是全局对象GO(global object)的一个属性 (全局对象:浏览器默认会自带很多供JS调取使用的内置API,这些属性方法都在GO中存储着,在浏览器端,把GO对象赋值给window,在node端把GO赋值给了global)
-
3.总结:全局上下文中,基于VAR创建变量,会给VO(G)和GO中各自存储一份,不带VAR的,只是给GO设置一个属性而已;当我们输出这个变量值的时候,首先看是否为全局变量,是则输出全局变量的值,如果不是,则在看是否为全局对象的属性,如果再不是,则报错!!
var n = 100; console.log(n);//=>100 console.log(window.n);//=>100 m = 200; console.log(m);//=>200 console.log(x);//=> x is not defined