js执行上下文

121 阅读1分钟

什么是执行上下文?

个人理解:

  1. 每次运行代码的时候,都是在执行上下文中,执行上下文相当于一个作用域,而运行代码每次都是在这个作用域中完成的
  2. 执行上下文是评估和执行代码环境的一种抽象概念,既然有评估,意思就是执行上下文是在运行代码之前完成的。

执行上下文分为三个类型:

  • 全局执行上下文
  • 函数执行上下文
  • Eval函数执行上下文 全局执行上下文: 在执行脚本之前,会将函数外部声明的数据或值,放到全局执行上下文中存储。

函数执行上下文: 在调用函数的过程中,每调用一个函数都会为该函数创建一个函数执行上下文,函数执行上下文只在调用函数的时候创建。

Eval函数执行上下文:有一个新的概念就是调用上下文,在调用Eval函数的时候产生的上下文,叫做调用上下文。

执行栈

个人理解: 执行栈的顺序首先是LIFO(后进先出Last In First Out),首先会创建一个全局执行上下文,然后每调用一个函数都会创建一个新的函数执行上下文,后创建的函数上下文一次叠加在栈顶,执行时,首先执行栈顶的函数,然后依次执行(栈顶的函数则是在代码中定义靠后的函数) 示例:

function first(){
    console.log('first')
};

first();

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

执行顺序图

执行栈流程图.png