js生成执行环境时,每一个执行环境生成一个变量对象,内部包含所有本执行环境内部的变量,那么它如何访问上一级执行环境中的变量对象呢

发布于 2022-09-06 20:11:29 字数 39 浏览 23 评论 0

访问上一级执行环境中的变量,那么岂不是要先把当前执行环境弹出栈?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一影成城 2022-09-13 20:11:29

每个函数都有自己的运行环境。

我理解的是当一个代码在一个环境中执行时,内部会创建变量对象的一个作用域链作用域链的作用是保证这段代码能够访问到所有合法的变量和函数

作用域链的前端是当前执行中的代码所在环境的变量,下一个节点(下一个变量)是来自外部环境,再下一个节点则来自下一个外部环境,就这样一直延伸下去,直到串起所有允许访问的运行环境,作用域链的最后一个对象是全局执行环境的变量对象。

所以我觉得访问上一级的环境变量时不需要将当前环境弹出栈,而是沿着作用域链往上依次查询变量

如果要在一个函数中调用其他函数的话,此时会创建一个新的执行环境,插入当前的栈,等待调用结束后,该活动对象销毁并弹出栈,执行权重新交付给调用它的上一个函数。

以上阐述仅代表个人观点,如果有误,欢迎指正,谢谢。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文