执行上下文的概念
执行上下文:js 代码解析和执行所在的环境
执行上下文的类型:
1.全局执行执行上下文
2.函数执行上下文
3.Eval 执行上下文
执行上下文栈(执行栈 )ECStack
执行上下文生命周期
变量对象VO和活动对象AO
ES6 提出的词法环境和变量环境:
词法环境LexicalEnvironment,变量环境VariableEnvironment
词法环境保存 let cost,并且初始时为
用以下代码举例:
let a = 20;
const b = 30;
var c;
function add(e, f) {
var g = 20;
function c(){}
return e + f + g;
}
c = add(20, 30);
函数预编译时的词法环境和变量环境
GlobalExectionContent = {
LexicalEnvironment: {
EnvironmentRecord: {
Type: "Object",
a: <uninitialied>,
b: <uninitialied>,
add: <func>
// 剩余标识符
},
Outer: null,
},
VariableEnvironment: {
EnvironmentRecord: {
Type: "Object",
c: undefined,
// 剩余标识符
},
Outer: null,
}
}
FunctionExectionContent = {
LexicalEnvironment: {
EnvironmentRecord: {
Type: "Declarative",
arguments: {
0: 20,
1: 30,
length: 2,
},
e: 20,
f: 30,
c: reference to function c(){}
// 剩余标识符
},
Outer: GlobalLexicalEnvironment,
},
VariableEnvironment: {
EnvironmentRecord: {
Type: "Declarative",
g: undefined,
// 剩余标识符
},
Outer: GlobalLexicalEnvironment,
}
}