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

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值