美文网首页
痛苦javascript之旅--执行上下文

痛苦javascript之旅--执行上下文

作者: 路家小白 | 来源:发表于2016-05-23 15:12 被阅读121次

通过上篇,我们已经知道js引擎是什么,那么我们就再了解一点更有意思的东西吧,

一.什么是可执行代码(Execution code)

1.定义(Definitions)

js中合法的代码,可以被js解析器执行的代码(非官方定义)

2.类型(Types of execution code)

在ECMASscript中的代码有三种类型:global, function和eval。

2.1全局代码(Global code)

这种类型的代码是在"程序"级处理的:例如加载外部的js文件或者本地标签内的代码。全局代码不包括任何function体内的代码。

2.2函数代码(Function code)

函数体中的代码(包括自定义和内建的函数)

2.3Eval代码(Eval  code)

使用eval函数执行的代码

二.什么是可执行上下文(Execution Context)

1.定义(Definitions)

每次当控制器转到ECMAScript可执行代码的时候,即会进入到一个执行上下文。执行上下文(简称-EC)是ECMA-262标准里的一个抽象概念,用于同可执行代码(executable code)概念进行区分。

2.类型(Types of execution code)--根据可执行代码的类型,Weber也给执行上下文分类

2.1.Global Execution Context 全局执行上下文

代码的默认运行环境,程序代码一旦被载入,最先进入的执行环境.只有一个全局执行上下文.

2.2.Function Execution Context 函数执行上下文

每当调用一个函数,也就是执行函数体中的代码会新建一个函数执行上下文环境.

2.3.Eval Execution Context Eval执行上下文

当使用eval函数执行代码的时候,会新建一个eval执行上下文.

3.组成(compose)

一个执行的上下文可以抽象的理解为object。每一个执行的上下文都有一系列的属性(我们称为上下文状态),他们用来追踪关联代码的执行进度。这个图示就是一个context的结构。

图 6. 上下文结构

除了这3个所需要的属性(变量对象(variable object),this指针(this value),作用域链(scope chain)),执行上下文根据具体实现还可以具有任意额外属性。

三.什么是执行上下文栈(Execution Context Stack(ECS))

如下图,所有的ECMAScript的程序执行都可以看做是一个执行上下文堆栈[execution context (EC) stack]。堆栈的顶部就是处于激活状态的上下文。

图 4. 执行上下文栈

当一段程序开始时,会先进入全局执行上下文环境[global execution context],

这个也是堆栈中最底部的元素。此全局程序会开始初始化,初始化生成必要的对象[objects]和函数[functions].

在此全局上下文执行的过程中,它可能会激活一些方法(当然是已经初始化过的),然后进入他们的上下文环境,然后将新的元素压入堆栈。在这些初始化都结束之后,这个系统会等待一些事件(例如用户的鼠标点击等),会触发一些方法,然后进入一个新的上下文环境。

见图5,有一个函数上下文“EC1″和一个全局上下文“Global EC”,下图展现了从“Global EC”进入和退出“EC1″时栈的变化:

图 5. 执行上下文栈的变化

ECMAScript运行时系统就是这样管理代码的执行。

我也是刚刚学习javascript这门语言,如果有什么理解错误的地方,欢迎指出。


来源于--汤姆大叔 - 博客园 

相关文章

  • 痛苦javascript之旅--执行上下文

    通过上篇,我们已经知道js引擎是什么,那么我们就再了解一点更有意思的东西吧, 一.什么是可执行代码(Executi...

  • 执行上下文

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

  • js深度剖析 : 执行环境和作用域链

    执行上下文 execution context 又称执行上下文或者执行环境. 执行上下文是JavaScript中一...

  • JavaScript 执行

    JavaScript 执行 一段 JavaScript 经过编译会生成两部分:执行上下文,可执行代码。在执行上下文...

  • 精品技术贴汇总

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

  • 深入浅出执行上下文、词法环境、变量环境

    执行上下文的概念 执行上下文:javascript 代码解析和执行时所在的环境。 执行上下文的类型 执行上下文分为...

  • 2020年前端面试复习必读文章

    1. JavaScript 基础 1.1 执行上下文/作用域链/闭包 理解 JavaScript 中的执行上下文和...

  • 编写高效的javascript

    读书笔记 1.当执行javascript代码时,javascript引擎会创建一个执行上下文。执行上下文设定了代码...

  • 执行上下文

    [TOC] 1.执行上下文 1.什么是执行上下文? 简而言之,执行上下文是评估和执行 JavaScript 代码的...

  • 执行上下文(个人笔记)

    本文参考:javaScript执行上下文和执行上下文栈一篇文章看懂JS执行上下文什么是执行上下文?什么是调用栈? ...

网友评论

      本文标题:痛苦javascript之旅--执行上下文

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