手机版

谈谈我对JavaScript原型和闭包系列的理解(注8)

时间:2021-09-19 来源:互联网 编辑:宝哥软件园 浏览:

在上一篇文章中,我向大家介绍了《谈谈我对JavaScript原型和闭包系列理解(随手笔记6)》。谈谈我对JavaScript原型和闭包系列的理解(手边的注释9)。单击了解更多信息。

执行上下文堆栈

当执行全局代码时,将生成一个执行上下文,该上下文将在每次调用函数时生成。当函数调用完成时,上下文和其中的数据将被消除,然后返回到全局上下文。只有一个活动的执行上下文。

推出堆栈-执行上下文堆栈:

A=10,//1。输入全局contextfn fn,bar=function(x){ var b=5;fn(x b);//3.输入fn函数上下文};fn=函数(y){ var c=5;console . log(y c);};酒吧(10);//2.输入条形函数1的上下文环境。在执行之前,首先创建一个全局上下文环境。

2.代码执行。在执行到bar(10)之前,全局上下文中的变量在执行期间被赋值。

3.执行到bar(10)调用bar函数,同时在函数内部创建执行上下文环境。

4.此时,执行上下文环境被推送并设置为活动状态。

5.bar函数执行到fn(x b),调用fn函数,创建fn函数的执行上下文,推送堆栈,并将其设置为活动状态。

6.fn函数执行后,fn环境从堆栈中出来,被销毁,释放内存,bar函数变为活动状态。

7.fn函数被执行并销毁,这意味着bar也被执行。这时,酒吧功能环境被弹出并破坏。环境在全球变得活跃。

至此,这段代码的执行过程结束。

根据原作者的描述:

其中我省略了很多上下文环境下的变量赋值过程,因为不难,大家一目了然。

确实如此!在代码的一般执行过程完成后,我们可以清楚地知道每个执行环境中的变量是什么状态。

在这一点上,我不得不遗憾地告诉你:事实上,我们上面展示的是一个理想的情况。有一种情况,而且是很常见的情况,不能这么干净利落的销毁。这种情况就是伟大的——关闭。要谈论闭包,我们必须从自由变量和范围开始。

以上内容是一个小系列,分享我对JavaScript原型和闭包系列的理解(手边的注释8)。希望你喜欢。

版权声明:谈谈我对JavaScript原型和闭包系列的理解(注8)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。