js执行上下文

90 阅读2分钟

前言

了解并理解执行上下文,是十分重要的事情,执行上下文关系着一系列日常问题,如:变量提升函数声明等问题,我们想要做一个好的开发人员,要对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…

执行阶段

执行变量赋值,代码执行

回收阶段

执行上下文出栈,等待虚拟机制回收