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