VO(Variable Object)是执行上下文的一个属性

VO is a property of an execution 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/