什么是执行上下文?
个人理解:
- 每次运行代码的时候,都是在
执行上下文中,执行上下文相当于一个作用域,而运行代码每次都是在这个作用域中完成的 - 执行上下文是评估和执行代码环境的一种抽象概念,既然有
评估,意思就是执行上下文是在运行代码之前完成的。
执行上下文分为三个类型:
- 全局执行上下文
- 函数执行上下文
- Eval函数执行上下文
全局执行上下文: 在执行脚本之前,会将函数外部声明的数据或值,放到全局执行上下文中存储。
函数执行上下文:
在调用函数的过程中,每调用一个函数都会为该函数创建一个函数执行上下文,函数执行上下文只在调用函数的时候创建。
Eval函数执行上下文:有一个新的概念就是调用上下文,在调用Eval函数的时候产生的上下文,叫做调用上下文。
执行栈
个人理解: 执行栈的顺序首先是LIFO(后进先出Last In First Out),首先会创建一个全局执行上下文,然后每调用一个函数都会创建一个新的函数执行上下文,后创建的函数上下文一次叠加在栈顶,执行时,首先执行栈顶的函数,然后依次执行(栈顶的函数则是在代码中定义靠后的函数) 示例:
function first(){
console.log('first')
};
first();
function second(){
console.log('second');
}
second()
执行顺序图