function fn(a){ console.log(a); var a = 123; function a(){} console.log(a); var b = function(){} console.log(b); function d(){} } fn(1);
预编译四部曲
1、创建AO对象
2、找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
3、将实参和形参相统一
4、在函数体里面找函数声明,把函数声明的名作为AO属性名,值赋予函数体