VO是早期ECMA规范中的变量对象(variable object)的缩写;
早期ECMA规范这么写到:每一个执行上下文会被关联到一个变量对象(variable object)。在源代码中的变量和函数声明会被作为属性添加到VO中。对于函数来说,参数也会被添加到VO中。
在最新的ECMA规范中,对这个定义做出了一些修改,更加的严谨,而变量对象也就是VO修改成了变量环境(variable Environment)也就是VE。
来看看最新ECMA规范里面是怎么描述的吧:每一个执行上下文会关联到一个变量环境(variable environment)。在执行代码中变量和函数的声明会作为环境记录(Environment Record)添加到变量环境中。对于函数来说,参数也会被作为环境记录添加到变量环境中。
为什么会做出这个修改呢?因为这个变量环境不一定用对象实现,还能是Map等等,所以用变量环境来描述更加严谨些。