【进阶1-1】理解JavaScript的执行上下文和执行栈

2019-03-07  本文已影响0人  IgreatDD

执行上下文

执行上下文是当前JavaScript被解析和运行时所在环境的抽象概念。

执行上下文的类型

执行栈

执行栈,也叫任务栈。具有LIFO(后进先出)的结构。用于存储代码运行期间创建的所有执行上下文。

  1. 首次运行代码时,会创建一个全局的执行上下文,并push到执行栈中。每当发生函数调用,都会创建一个函数执行上下文,并push到当前的执行栈中。
  2. 根据任务栈LIFO的结构,当栈顶函数调用完毕后,会从执行栈的栈顶pop出这个函数的函数执行上下文。上下文控制权会移交给下一个执行上下文。
function first() {  
  console.log('Inside first function');  
  second();  
  console.log('Again inside first function');  
}

function second() {  
  console.log('Inside second function');  
}

first();  
console.log('Inside Global Execution Context');
// Inside first function
// Inside second function
// Again inside first function
// Inside Global Execution Context
JavaScript执行上下文流程图.png

执行上下文的创建

执行上下文分为两个阶段进行创建:1.创建阶段2.执行阶段

创建阶段

  1. 确定 this 的值,也就是 this binding
  2. LexicalEnvironment(词法环境) 组件被创建。
  3. VariableEnvironment(变量环境) 组件被创建。
上一篇下一篇

猜你喜欢

热点阅读