SOURCE

function fn(a,c){
    console.log(a)  //functiona(){}
    var a = 123
    console.log(a)  //123
    console.log(c)  //function c(){}
    function a(){

    }
    if(false){
        var d = 678
    }
    console.log(d)   //undefined
    console.log(b)  //undefined
    var b = function(){}
    console.log(b)  //function(){}
    function c(){}
    console.log(c)  //function c(){}
}
fn(1,2)

/* 函数作用域预编译 */
//1.创建执行上下文内部对象AO对象 AO{}
//2.找出形参和变量声明,讲变量和形参名当作AO对象的属性名值为undefined
//3.形参实参统一
//4.在函数体内找函数声明,值赋予函数体
//AO:{
//    a:undefined 1 function a(){}
//    c:undefined 2 function c(){}
//    d:undefined 
//    b:undefined
//}

/* 全局作用域预编译 */
//1.创建执行上下文内部对象GO对象 GO{}
//2.找变量声明,讲变量名作为GO对象的属性名 值为undefined
//3.找函数声明,值赋予函数体
console 命令行工具 X clear

                    
>
console