美文网首页
2019-03-13 执行上下文、函数堆栈

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

作者: 忙于未来的民工 | 来源:发表于2019-04-12 10:26 被阅读0次

概念

EC:函数执行环境(执行上下文)

ECS:执行环境栈

VO:变量对象

AO:活动对象

scope chain:作用域链

EC

当js引擎执行js代码时,就会进入到一个执行环境

js代码类型:

全局代码:这种类型的代码在程序启动时就会执行的代码。例如加载外部js文件,或者本地<script></script>标签内的代码,全局代码不包含函数体内的代码。

函数代码:任何一个函数内部的代码,不包括函数内部的函数的代码。其实每次进入一个函数内部都会新建一个执行上下文

eval代码eval方法接收的代码片段

ec建立分为两个阶段:

进入执行上下文和执行阶段

进入执行上下文:函数已经被调用,但是未执行函数中的代码

执行阶段:变量赋值,函数引用,执行代码

可以将执行上下文(EC)看成一个对象

EC={

VO:{/* 函数中的arguments对象, 参数, 内部的变量以及函数声明 */},

this:{},

Scope:{/* VO以及所有父执行上下文中的VO */}

}

ECS

ecs是执行环境栈。执行环境栈是一个栈结构,里面存储的是执行上下文,当程序启动时,进入全局上下文并将全局上下文加入到执行环境栈(ECS),当调用函数时,会新建一个执行上下文(a),然后将这个上下文压入执行环境栈的顶部。如果在函数内部又调用一个函数,那么会继续新建一个执行上下文(b),然后将这个上下文压入执行环境栈的顶部(如果再调用其他的函数,继续重复上一个动作)。

当执行上下文b执行结束后,执行环境栈会将将b从栈中弹出,接着执行a。当栈中的上下文被执行完毕,会重新回到全局上下文

VO(变量对象)/AO(活动对象)

ao其实就是激活的vo

VO: {// 上下文中的数据 (变量声明(var), 函数声明(FD), 函数形参(function arguments))}

1:进入执行上下文时,VO的初始化过程

函数的形参:变量对象的属性,形参的名字为key,值为val,若没有传递参数,那么值为undefined

函数的声明:其属性的名与值都是函数对象创建出来的,如果变量对象已经同名的属性,那么替换它的值

变量声明:和形参一样,变量名字为key,值为undefined,当变量名字和函数名或者函数的参数名相同时,不会影响已经存在的属性。

注意:

function s(a) {

console.log(a);  // 1

  var a;

  a= 4;

  console.log(a)  // 4

}

s(1);

该过程有先后顺序

2:执行代码阶段,VO的一些属性undefined值将会确定

活动对象:活动对象就是被激活的对象,其实就是每次进入一个执行上下文,那么当前上下文的变量对象就是活动对象。

相关文章

  • 执行上下文

    深入理解JavaScript执行上下文、函数堆栈、提升的概念 解密 JavaScript 执行上下文

  • 精品技术贴汇总

    about 执行上下文 深入理解JavaScript执行上下文、函数堆栈、提升的概念 JavaScript深入之变...

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

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

  • JavaScript 机制 /

    堆栈结构 执行上下文(运行环境) 运行环境规定函数中代码执行的顺序,JavaScript 引擎会以栈的方式来处理他...

  • 对js执行上下文的理解

    执行上下文 执行上下文有三种: 全局执行上下文在执行全局代码的时候会创建全局上下文 函数执行上下文在执行函数代码的...

  • JS(执行上下文、函数堆栈、提升)

    一、几个概念 EC(Execution Context):函数执行环境(或执行上下文) ECS(Execution...

  • js 代码的执行

    执行上下文 EC(Execution Context):代码自己执行所在的环境 全局执行上下文 函数执行上下文 ...

  • 再学 this

    执行上下文主要分为三种:全局执行上下文、函数执行上下文、eval执行上下文。而this和执行上下文是相互绑定的,所...

  • 作用域链

    运行期上下文:当函数执行时,会创建一个称为执行期上下文的内部对象。一个执行期上下文定义了一个函数执行时的环境,函数...

  • 浏览器工作原理和实践-javascript执行机制

    执行上下文 javascript会创建一个全局的执行上下文,每次执行一个函数又会创建一个执行上下文,确定该函数在执...

网友评论

      本文标题:2019-03-13 执行上下文、函数堆栈

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