当代码运行时,JavaScript 引擎首先创建一个全局执行上下文来执行全局代码。全局执行上下文又分为创建和执行两个阶段,在创建阶段会有一个词法环境,词法环境里包括环境记录、Outer和this,在本段代码中,扫描代码时会在环境记录里声明a,b两个未初始化的值,会初始化c为undefined,会声明函数multiply,Outher因为是全局执行上下文里,没有外层环境可以引用,所以为空,this绑定在这里指的是全局变量。创建完成后就是执行阶段在本阶段 JS 引擎再次扫描代码,完成所有变量赋值给a赋20给b赋30,c由于由var声明且未赋值,仍为undefined。最后行代码中调用了函数,所以往执行栈中加入函数执行上下文,创建阶段声明g,e,f, Outer为全局词法环境,this为全局对象,然后是函数执行上下文的执行阶段,给e,f,g 赋值,并把efg的结果赋值给c,返回c,然后,全局词法环境就被更新了。之后,全局代码完成执行,程序结束。
day05
最新推荐文章于 2022-04-24 22:15:09 发布