js函数预编译

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属性名,值赋予函数体

原文地址:https://www.cnblogs.com/jokes/p/9385765.html