美文网首页
javascript 执行上下文

javascript 执行上下文

作者: gidle | 来源:发表于2019-08-01 11:24 被阅读0次

javascript  是单线程语言

javascript 是异步执行的,通过事件循环的方式进行

js引擎执行过程分为三个阶段:

1.语法分析

分析该js脚本代码块的语法是否正确,如果出现不正确,则向外抛出一个语法错误(SyntaxError),停止该js代码块的执行,然后继续查找并加载下一个代码块;如果语法正确,则进入预编译阶段

2.预编译阶段

3.执行阶段

js运行环境:

(1)全局环境

(2)函数环境

(3)eval环境

运行不同的环境会都创建一个执行上下文,js会以栈的形式来处理对这些执行上下文进行处理,形成函数调用栈,栈底是永远是全局执行上下文。

函数调用栈:

特点:先进后出、后进先出

创建执行上下文(发生在预编译阶段)

执行上下文可理解为当前的执行环境,与该运行环境相对应。创建执行上下文的过程中,主要做了以下三件事件

1.创建变量对象

过程:

    创建arguments对象 :检查上下文环境,建立该对象的属性与属性值,仅在函数环境中进行(非箭头函数)。

    检查function函数声明创建属性 :检查当前上下文函数声明,按照代码顺序,将找到的函数提前声明,如果当前上下文的变量对象没有该函数      名属性,则在该变量对象以函数名建立一个属性,属性值则为指向该函数所在内存地址的引用,如果存在,则会被新的引用覆盖。

    检查var变量声明创建属性:检查当前上下文的变量,按代码顺序查找,将找到的变量提前声明,如果当前上下文的变量对象没有该变量名属        性,则在该变量对象以变量名建立一个属性,属性值为undefind,如果存在,则忽略该变量声明。

注:在全局环境中,window对象就是全局执行上下文的变量对象,所有的变量和函数都是window对象的属性方法。

注:创建变量对象发生在预编译阶段,但尚未进入执行阶段,该变量对象都是不能访问的,因为此时的变量对象中的变量属性尚未赋值,值仍为undefined,只有进入执行阶段,变量对象中的变量属性进行赋值后,变量对象(Variable Object)转为活动对象(Active Object)后,才能进行访问

2.建立作用域链

作用域链由当前执行环境的变量对象(未进入执行阶段前)与上层环境的一系列活动对象组成,它保证了当前执行环境对符合访问权限的变量和函数的有序访问。

    作用域第一项永远为当前作用域

    最后一项永远为全局作用域

    作用域链保证了变量和函数的有序访问,查找方式是沿着作用域链从左至右查找变量或函数,找到则会停止查找,找不到则一直查找到全局作用域,再找不到则会抛出引用错误。

3.确定this指向

在全局环境下,全局执行上下文中变量对象的this属性指向为window;函数环境下的this指向却较为灵活,需根据执行环境和执行方法确定

相关文章

  • 执行上下文

    深入理解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中执行上下文与执行栈

    执行上下文是当前 JavaScript 代码被解析和执行时所在环境的抽象概念。 执行上下文的类型 全局执行上下文:...

网友评论

      本文标题:javascript 执行上下文

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