JS的执行上下文和执行上下文栈
执行上下文就是当前 JavaScript 代码被解析和执行时所在环境, JS执行上下文栈可以认为是一个存储函数调用的栈结构。
当一段 JavaScript 代码在运行的时候,它实际上是运行在执行上下文中。
- JavaScript执行在单线程上,所有的代码都是排队执行。
- 浏览器执行全局的代码时,首先创建全局的执行上下文,压入执行栈的顶部。
- 每个函数会在执行的时候创建自己的执行上下文,并且把它压入执行栈的顶部。这个上下文就是通常说的 “本地上下文”。当前函数执行完毕并退出的时候,其上下文也从栈中弹出并销毁。
- 主程序退出,全局执行上下文从执行栈中弹出。此时栈中所有的上下文都已经弹出,程序执行完毕。
作用域链
函数执行所需要的变量在当前作用域中找不到的时候,它就会一层一层向上查找,一直找到全局作用域。这种一层一层的关系,就是作用域链。
参考
- 深入:微任务与Javascript运行时环境 - Web API 接口参考 | MDN https://developer.mozilla.org/zh-CN/docs/Web/API/HTML_DOM_API/Microtask_guide/In_depth
- 【JavaScript】深入理解作用域、作用域链和闭包_包磊磊的博客-CSDN博客 https://blog.csdn.net/qq_34629352/article/details/105871624