js预编译环节 变量声明提升 函数声明整体提升

预编译四部曲
1.创建AO对象
2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
3.将实参和形参统一
4.在函数体里面找函数声明,值赋予函数体

function fn(a){
     console.log(a) //function a(){}
     var a = 123;
     console.log(a)//123
     function a(){}
     console.log(a)//123
     var b = function(){}
     console.log(b) //function(){}

}
fn(1)

原文地址:https://www.cnblogs.com/showcase/p/11263386.html