VO(Variable Object)是执行上下文的一个属性
VO
is a property of anexecution context
全局上下文中的变量对象是全局对象自身
VO(globalContext) === global;
变量只能通过var
关键字声明
可以通过在全局上下文中使用
var
或者在任何地方不用var
来声明全局变量
上面这句话说法是错误的。a = 10
,只是给全局对象global(window)增加了一个属性a
,而不是声明了一个变量
变量不能被删除(无法使用delete
来删除一个变量),eval
上下文中除外。
<script>
a = 10;
alert(window.a); // 10
alert(delete a); // true
alert(window.a); // undefined
var b = 20;
alert(window.b); // 20
alert(delete b); // false
alert(window.b); // still 20
eval('var a = 10');
a = 10;
alert(window.a); // 10
alert(delete a); // true
alert(window.a); // undefined
</script>
参考:http://dmitrysoshnikov.com/ecmascript/chapter-2-variable-object/