JS预编译

js预编译

  1. 创建AO对象
  2. 找函数形参和变量声明,值给undefined
  3. 实参形参统一
  4. 在函数体里面找函数声明,值赋予函数体
function fn(a){
   console.log(a); //在AO里找值--->输出 function a() {}
   var a = 123; //预编译将 var a,提升上去了,执行 a = 123;修改AO中a的值
   console.log(a); //输出 123
   function a() {} //预编译读过,不再读
   console.log(a); //输出 123
   var b = function() {} //函数表达式,将AO中b的值改为function () {}
   console.log(b); //输出funtion () {}
   function d() {}
}
fn(1);
第一步:AO{ }
第二步:
AO{
a : undefined,
b : undefined
}
第三步:
AO{
a : 1,
b : undefined
}
第四步:
AO{
a : function a() {},
b : undefined,
d : function d() {}
}
posted @ 2021-03-13 11:27  小丞同学  阅读(42)  评论(0)    收藏  举报