美文网首页
JavaScript 变量对象:VO 和 AO

JavaScript 变量对象:VO 和 AO

作者: 靴唯白 | 来源:发表于2024-02-25 11:01 被阅读0次

在 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

相关文章

  • 原来JS函数提升 变量提升原来是这样

    1.一些常见术语 AO:函数执行前产生的一个对象 GO:全局对象 VO:变量对象,一般指向AO或GO ECS:上下...

  • 2019-03-13 执行上下文、函数堆栈

    概念 EC:函数执行环境(执行上下文) ECS:执行环境栈 VO:变量对象 AO:活动对象 scope chain...

  • JavaScript预编译

    JavaScript预编译四部曲: 创建AO(Activation Object)对象; 找形参和变量申明,将变量...

  • 函数预编译(回顾)

    AO对象及GO对象 AO对象主要分为四步 1 创建AO对象 2 找形参和变量声明,将变量声明和形参名作为AO属性名...

  • 预编译阶段变量函数的提升 和 多个函数的执行顺序

    下面这道题讲解变量和函数的提升 预编译js的变量对象 AO对象 让js引擎去访问1、创建AO对象2、找形参和变量的...

  • 函数预编译

    流程 函数被调用时,为当前函数产生AO对象 查找形参和变量声明作为AO对象的属性名,值为undifiend 使用实...

  • 2018-09

    dto、do、vo、bo、ao lombok

  • 预编译笔记

    AO activation object (活跃对象,函数上下文)AO={1.寻找函数的形参和变量声明a: u...

  • JavaScript 作用域

    在 JavaScript 中, 对象和函数同样也是变量。 在 JavaScript 中, 作用域为可访问变量,对象...

  • JavaScript作用域

    在 JavaScript 中, 对象和函数同样也是变量。 在 JavaScript 中, 作用域为可访问变量,对象...

网友评论

      本文标题:JavaScript 变量对象:VO 和 AO

      本文链接:https://www.haomeiwen.com/subject/ivcaadtx.html