yuanyuanbyte/Blog

JavaScript 深入系列之执行上下文栈和作用域链

yuanyuanbyte opened this issue · 0 comments

本系列的主题是 JavaScript 深入系列,每期讲解一个技术要点。如果你还不了解各系列内容,文末点击查看全部文章,点我跳转到文末

如果觉得本系列不错,欢迎 Star,你的支持是我创作分享的最大动力。

对JS执行上下文栈和作用域链的理解

JS的执行上下文和执行上下文栈

执行上下文就是当前 JavaScript 代码被解析和执行时所在环境, JS执行上下文栈可以认为是一个存储函数调用的栈结构。

当一段 JavaScript 代码在运行的时候,它实际上是运行在执行上下文中。

  • JavaScript执行在单线程上,所有的代码都是排队执行。
  • 浏览器执行全局的代码时,首先创建全局的执行上下文,压入执行栈的顶部。
  • 每个函数会在执行的时候创建自己的执行上下文,并且把它压入执行栈的顶部。这个上下文就是通常说的 “本地上下文”。当前函数执行完毕并退出的时候,其上下文也从栈中弹出并销毁。
  • 主程序退出,全局执行上下文从执行栈中弹出。此时栈中所有的上下文都已经弹出,程序执行完毕。

作用域链

函数执行所需要的变量在当前作用域中找不到的时候,它就会一层一层向上查找,一直找到全局作用域。这种一层一层的关系,就是作用域链。

参考

查看全部文章

博文系列目录

  • JavaScript 深入系列
  • JavaScript 专题系列
  • JavaScript 基础系列
  • 网络系列
  • 浏览器系列
  • Webpack 系列
  • Vue 系列
  • 性能优化与网络安全系列
  • HTML 应知应会系列
  • CSS 应知应会系列

交流

各系列文章汇总:https://github.com/yuanyuanbyte/Blog

我是圆圆,一名深耕于前端开发的攻城狮。

weixin