JavaScript-小插曲——预编译

预编译

预编译过程发生在函数执行的前一刻

预编译四部曲

1,创建AO对象
2,找形参和变量声明,将变量和形参名作为AO对象的属性名, 值为undefined;
3,将形参和实参相统一
4,在函数体里面找函数声明,值赋予函数体

来源于哔哩哔哩 渡一教育JavaScript视频
https://www.bilibili.com/video/av64563473?p=11
可以从52分看起

 // 预编译过程发生在函数执行的前一刻
    // 编译四部曲
    // 1,创建AO对象
    // 2,找形参和变量声明,将变量和形参名作为AO对象的属性名, 值为undefined;
    // 3,将形参和实参相统一
    // 4,在函数体里面找函数声明,值赋予函数体

    function test(a) {
      console.log(a);
      var a = 123;
      console.log(a);
      function a() {};
      console.log(a);
      var b = function () {};
      console.log(b);
      function d() {};
    }
    test(10);

输出结果

大致简略过程(写的很简略)推荐去看看视频

猜你喜欢

转载自www.cnblogs.com/yohe/p/12461708.html
今日推荐