作用域
全局代码执行过程
- 代码解析(v8引擎内部创建一个全局对象
GO) 运行代码
- 内部创建一个
ECStack执行上下文栈/函数调用栈 - 为了执行全局代码,创建
GEC全局执行上下文
- 内部创建一个
ECStack(Exection Content Stack)执行上下文栈、函数调用栈
GEC(Global Exection Centent)全局执行上下文
VO(Variable Object),其指向GO(Global Object)全局对象scopechain(作用域链)存储其父级作用域,并只由定义位置决定,而非调用位置(大多数为GO)
函数代码执行过程
- 代码解析时,在堆内存中创建一个函数存储空间(其中存储执行环境和函数体代码),并以函数名为变量名,存储空间地址为变量值存储在父作用域中
function foo(x){console.log(x);}/*堆内存:foo(0x十六进制地址)[[scope]]:parent scope函数体代码(console.log(x))*/
在函数被调用时创建一个
FEC函数执行上下文和VO活跃对象(类似GO存储作用域变量),并入栈ECStack中执行函数执行完成后,对应
FEC出栈
FEC(Functional Excetion Centent)函数执行上下文
VO(Variable Object),其指向AO(Actional Object)scopechain(作用域链)存储其父级作用域,并只由定义位置决定,而非调用位置(大多数为GO)
AO(Activation Object)活跃对象
ECMA标准
VariableEnvironment变量环境
Environment Record环境记录

