js生成执行环境时,每一个执行环境生成一个变量对象,内部包含所有本执行环境内部的变量,那么它如何访问上一级执行环境中的变量对象呢
访问上一级执行环境中的变量,那么岂不是要先把当前执行环境弹出栈?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
访问上一级执行环境中的变量,那么岂不是要先把当前执行环境弹出栈?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
每个函数都有自己的运行环境。
我理解的是当一个代码在一个环境中执行时,内部会创建变量对象的一个
作用域链
,作用域链的作用是保证这段代码能够访问到所有合法的变量和函数。作用域链的前端是当前执行中的代码所在环境的变量,下一个节点(下一个变量)是来自外部环境,再下一个节点则来自下一个外部环境,就这样一直延伸下去,直到
串起所有允许访问的运行环境
,作用域链的最后一个对象是全局执行环境
的变量对象。所以我觉得访问上一级的环境变量时不需要将当前环境弹出栈,而是沿着作用域链往上依次查询变量。
如果要在一个函数中调用其他函数的话,此时会创建一个新的执行环境,插入当前的栈,等待调用结束后,该活动对象销毁并弹出栈,执行权重新交付给调用它的上一个函数。
以上阐述仅代表个人观点,如果有误,欢迎指正,谢谢。