前言
了解并理解执行上下文,是十分重要的事情,执行上下文关系着一系列日常问题,如:变量提升、函数声明等问题,我们想要做一个好的开发人员,要对js的底层有一定的了解,才能更好的完成项目,也能给用户更好的体验,不断的积累,也会让我们个人能力不断增强,大家,加油呀~~~
壹. 什么是执行上下文
执行上下文:当js代码被解析执行的时候,创建的一个环境
贰. 有几种执行上下文的情况
全局执行上下文:所有不在函数中的代码,都会在全局执行上下文的环境中,
且全局执行上下文在一次程序提交中,只有一个全局执行上下文
函数执行上下文:每个函数在调用且未执行之前都会创建一个执行上下文,
且如果一个函数被多次调用,每调用一次,也会被创建一次执行上下文
eval函数执行上下文:eval函数在执行的时候,会在eval内部创建一个执行上下文,
用的不多,有兴趣的可以查一下
叁. 全局执行上下文时都做了什么?
1. 创建了一个全局对象,如:浏览器的全局对象就是window
2. 绑定this指向,将this指向这个全局对象
注意:此处重点分析函数执行上下文,全局执行上下文,只要程序执行就会创建
肆. 函数执行上下文都做了什么
创建阶段(重点哦~) —— 执行阶段 —— 回收阶段
创建阶段(重点哦~)
1. 创建变量对象:{
① 首先初始化函数的参数(arguments)
② 提升函数声明和变量声明
}
2. 创建作用域链:{
① 在执行上下文创建戒断,作用域链是在变量对象之后创建的
}
3. 确定this指向:关于this指向可点此~~https://juejin.cn/post/7114940016781951007
关于this指向可点此,this 指向拆解: juejin.cn/post/711494…
执行阶段
执行变量赋值,代码执行
回收阶段
执行上下文出栈,等待虚拟机制回收