function preCompile(a,c){ console.log(a); function a(){ alert(1); } console.log(a); var a=1; console.log(a); console.log(b); function b(){ } console.log(c); } var a=2; console.log("window1"+a); preCompile(3,4); console.log("window2"+a);
function preCompile(a,c){ console.log(a); // ƒ a(){ // alert(1); // } function a(){ alert(1); } console.log(a); // ƒ a(){ // alert(1); // } var a=1; console.log(a); //1 console.log(b); // ƒ b(){ // } function b(){ } console.log(c); //4 } var a=2; console.log("window1"+a); //window12 preCompile(3,4); console.log("window2"+a); //window22
预编译
1.创建一个对象
2.找形参和变量的声明,作为对象的属性,值是undefined
3.实参和形参相统一
4.找函数声明,会覆盖变量的声明
obj:{
a: undefined 3 function a (){ alert(1)}
c: undefined 4
b: undefined f unction b (){}
}
预编译之后,js的解释执行,按顺序逐行执行