0
点赞
收藏
分享

微信扫一扫

面试题准备(三):执行期上下文

alanwhy 2022-02-23 阅读 78

文章目录

执行期上下文

运行三部曲

  1. 语法分析
  2. 预编译
  3. 解释执行

预编译四部曲

  1. 创建 AO — Activation Object 对象,即执行期上下文
  2. 寻找形参和变量声明,将变量和形参都作为 AO 的属性名,值设为 undefined
  3. 形参实参相统一
  4. 在函数体中寻找函数声明,赋给函数体
// 分析 fun1 函数的执行期上下文
function fn(a) {
    console.log(a); 
    var a = 123; 
    console.log(a); 
    function a() { } 
    console.log(a);
    var b = function () {}
    console.log(b);
    function d() {}
}
fn(1); 
  1. 首先是创建 AO 对象
  2. 形参 a、b 置入 AO ,值为 undefined
    AO {
    a: undefined
    b: undefined
    }
  3. 形参实参相统一
    AO {
    a: 1
    b: undefined
    }
  4. 函数体赋给变量
    AO {
    a: function a() { }
    b: undefined
    d: function d() { }
    }
  5. 函数开始顺序执行
    打印 a 为 a() { }
    a 赋值为 123
    打印 a 为 123
    函数定义已提升略过
    打印 a 为 123
    b 赋值为 function () {}
    打印 b 为 function () {}
    在这里插入图片描述
举报

相关推荐

0 条评论