执行上下文的概念

执行上下文:js 代码解析和执行所在的环境

执行上下文的类型:

1.全局执行执行上下文
2.函数执行上下文
3.Eval 执行上下文

执行上下文栈(执行栈 )ECStack

执行上下文生命周期

变量对象VO和活动对象AO

ES6 提出的词法环境和变量环境:

词法环境LexicalEnvironment,变量环境VariableEnvironment

词法环境保存 let cost,并且初始时为,而 变量环境初始为 undefinded

用以下代码举例:

  1. let a = 20;
  2. const b = 30;
  3. var c;
  4. function add(e, f) {
  5. var g = 20;
  6. function c(){}
  7. return e + f + g;
  8. }
  9. c = add(20, 30);

函数预编译时的词法环境和变量环境

  1. GlobalExectionContent = {
  2. LexicalEnvironment: {
  3. EnvironmentRecord: {
  4. Type: "Object",
  5. a: <uninitialied>,
  6. b: <uninitialied>,
  7. add: <func>
  8. // 剩余标识符
  9. },
  10. Outer: null,
  11. },
  12. VariableEnvironment: {
  13. EnvironmentRecord: {
  14. Type: "Object",
  15. c: undefined,
  16. // 剩余标识符
  17. },
  18. Outer: null,
  19. }
  20. }
  21. FunctionExectionContent = {
  22. LexicalEnvironment: {
  23. EnvironmentRecord: {
  24. Type: "Declarative",
  25. arguments: {
  26. 0: 20,
  27. 1: 30,
  28. length: 2,
  29. },
  30. e: 20,
  31. f: 30,
  32. c: reference to function c(){}
  33. // 剩余标识符
  34. },
  35. Outer: GlobalLexicalEnvironment,
  36. },
  37. VariableEnvironment: {
  38. EnvironmentRecord: {
  39. Type: "Declarative",
  40. g: undefined,
  41. // 剩余标识符
  42. },
  43. Outer: GlobalLexicalEnvironment,
  44. }
  45. }