JavaScript标准把一段代码(包括函数)执行所需的所有信息定义为“执行上下文”(可理解为当前代码的执行环境,同一个函数在不同的环境中执行,会因访问的数据不同产生不一样的结果),其是执行的基础设施。执行上下文包含的内容有很多,下面从类型、包含内容、生命周期、执行过程、结论来进行阐述。
成都创新互联专注于歙县网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供歙县营销型网站建设,歙县网站制作、歙县网页设计、歙县网站官网定制、微信小程序开发服务,打造歙县网络公司原创品牌,更为您提供歙县网站排名全网营销落地服务。
执行上下文主要分为三类:全局执行上下文、函数执行上下文、eval函数执行上下文。
全局执行上下文
当JavaScript执行全局代码的时候,会编译全局代码并创建全局执行上下文,而且在整个页面的生存周期内,全局执行上下文只有一份。
函数执行上下文
当调用一个函数的时候,函数体内的代码会被编译,并创建函数执行上下文,一般情况下,函数执行结束之后,创建的函数执行上下文会被销毁。
eval执行上下文
当使用eval函数的时候,eval代码也会被编译,并创建执行上下文。
执行上下文在不同的版本中定义不同,《重学前端》中对此进行了总结,目前主要有三个版本:
执行上下文在ES3中,包含三个部分。
在ES5中,我们改进了命名方式,把执行上下文最初的三个部分改为下面这个样子。
在ES2018中,执行上下文又变成了这个样子,this值被归入lexical environment,但是增加了不少内容。
在执行上下文生命周期部分(将按照ES3阶段的内容进行介绍,因为自我感觉后续定义的名词内容虽然更全面,但背起来确实不是很容易),分为创建阶段和执行阶段两个阶段,每个阶段负责不同的事情。(注:,每一部分都是一个问题,详细解释看后续百题斩。)
创建阶段
创建阶段主要负责生成变量对象、建立作用域链以及确定this指向。
代码执行阶段
创建完成之后,就会开始执行代码,这个时候,会完成变量赋值,函数引用,以及执行其他代码。
百题斩【008-009】介绍了代码和函数的执行过程,但是这个介绍只是从宏观方面进行介绍,并没有进行详细的介绍,下面将从调用栈这个角度详细阐述一下代码的执行过程。
下面将举一个例子来阐述该执行过程。
- var a = 1;
- function f1() {
- // ……
- }
- function f2() {
- f1();
- // ……
- }
- f2();
上述代码的调用栈如下所示:
了解了执行上下文,需要记住一些结论性的东西
本文转载自微信公众号「执鸢者」,可以通过以下二维码关注。转载本文请联系执鸢者公众号。
分享标题:前端百题斩——通俗易懂的JavaScript执行上下文
网站网址:http://www.shufengxianlan.com/qtweb/news39/267989.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联