JavaScript 深入系列之执行上下文栈和作用域链
yuanyuanbyte opened this issue · 0 comments
yuanyuanbyte commented
本系列的主题是 JavaScript 深入系列,每期讲解一个技术要点。如果你还不了解各系列内容,文末点击查看全部文章,点我跳转到文末。
如果觉得本系列不错,欢迎 Star,你的支持是我创作分享的最大动力。
对JS执行上下文栈和作用域链的理解
JS的执行上下文和执行上下文栈
执行上下文就是当前 JavaScript 代码被解析和执行时所在环境, JS执行上下文栈可以认为是一个存储函数调用的栈结构。
当一段 JavaScript 代码在运行的时候,它实际上是运行在执行上下文中。
- JavaScript执行在单线程上,所有的代码都是排队执行。
- 浏览器执行全局的代码时,首先创建全局的执行上下文,压入执行栈的顶部。
- 每个函数会在执行的时候创建自己的执行上下文,并且把它压入执行栈的顶部。这个上下文就是通常说的 “本地上下文”。当前函数执行完毕并退出的时候,其上下文也从栈中弹出并销毁。
- 主程序退出,全局执行上下文从执行栈中弹出。此时栈中所有的上下文都已经弹出,程序执行完毕。
作用域链
函数执行所需要的变量在当前作用域中找不到的时候,它就会一层一层向上查找,一直找到全局作用域。这种一层一层的关系,就是作用域链。
参考
博文系列目录
- JavaScript 深入系列
- JavaScript 专题系列
- JavaScript 基础系列
- 网络系列
- 浏览器系列
- Webpack 系列
- Vue 系列
- 性能优化与网络安全系列
- HTML 应知应会系列
- CSS 应知应会系列
交流
各系列文章汇总:https://github.com/yuanyuanbyte/Blog
我是圆圆,一名深耕于前端开发的攻城狮。