预编译 1:创建AO对象 AO:{ }2: 将函数体中声明的变量提升到当前作用域最顶端 给AO对象添加属性,赋值为undefined3: 将函数体中声明的函数提升到作用域的顶端 给A0赋值属性 属性为函数名 值为定义函数的指针 解析执行: 1: 每执行一行AO中属性进行重新赋值2: 如果有未经直接赋值的变量 那么 是给父级作用域中声明的变量进行赋值 所有族级域中都没有声明 那么给go添加属性并赋值