JavaScript 变量对象:VO 和 AO

在 JavaScript 中,函数执行过程中会涉及到一个名称叫变量对象。

变量对象是当前代码块中,所有变量(变量、函数、形参、arguments类数组对象)组成的一个对象
变量对象是在执行上下文中被激活的,只有变量对象被激活了,在这段代码中才能使用所有的变量
变量对象分为全局变量对象和局部变量对象
全局变量对象简称为 Variable Object VO
函数由于执行才能被激活称为 Active Object AO

具体来说,以下是一些常见的变量和函数声明,它们会被添加到 VO 中:

变量声明:使用 var 或 let 关键字声明的变量
函数声明:使用 function 关键字定义的函数
形参:函数定义时声明的参数
arguments: 函数的参数的类数组对象

AO 和 VO 的区别在于它们的创建时机不同。VO 是在函数被调用时创建的,而 AO 是在函数执行时创建的。在 AO 中,存储的变量和函数声明和 VO 中是一样的,但它们的值可能会发生变化。在函数执行时,变量的值会被更新,函数声明会被重新定义。

通过下面代码和图示例的结合:

var value = 1
function foo() {
   console.log(value)
}
function bar() {
  var value = 2
  foo()
}
bar()

在上面这段代码中,VO 和 AO 示例图如下:


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容