JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – 全局执行上下文是否可以弹出执行堆栈?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当JS代码开始运行时,全局执行上下文被创建并位于执行堆栈的底部,以“容纳”全局变量对象和’这’.
如果在执行整个JS代码并且没有全局执行上下文后执行堆栈变空,那么我们如何仍然能够访问全局变量(例如,我正在运行带有JS的html文件)代码和完成后,我仍然能够通过Chrome控制台看到全局变量的值…)或者它如何仍然指向全局对象(如果没有任何执行上下文,则不应该有任何’this’ !)?

我可能给自己的唯一解释是全局执行上下文永远不会离开执行堆栈;它一直存在,直到我决定关闭浏览器窗口.我是对还是不对?

此外,在异步回调的情况下,当一个事件离开事件队列并进入JS引擎运行时,执行堆栈中究竟发生了什么?回调的执行上下文是否位于此堆栈的底部,还是全局执行上下文仍然存在?

有一个类似的主题Is the initial global execution context ever popped off the call stack in JavaScript?;但是,它没有回答我的问题.

谢谢

解决方法

运行整个代码时,执行堆栈变空.

即使没有执行代码,the global lexical environment仍然存在全局对象.当你喂一些代码到镀铬的控制台,代码正在评估,新的全球execution contextbeing created and initialized设置为全球环境及其词汇和可变的环境,这个绑定到全局对象.然后,您的代码在此上下文中执行,执行堆栈再次变为空.

每次使用全局代码初始化新的全局执行上下文时,它都会绑定到全局对象.

同样,创建新的全局执行上下文并将其推送到空执行堆栈.在MDN中,与ECMAScript spec略有不同的描述:

这里“堆栈帧”表示“执行上下文”,“初始堆栈帧”对应于“全局执行上下文”.

他们都不是.堆栈是空的.并且只有它是空的,最旧的回调是从回调/事件队列中获取的:

大佬总结

以上是大佬教程为你收集整理的javascript – 全局执行上下文是否可以弹出执行堆栈?全部内容,希望文章能够帮你解决javascript – 全局执行上下文是否可以弹出执行堆栈?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。