局部预编译
函数再调用之后 运行代码之前 引擎对函数预编译
1.每次调用都会创建一个AO象====>Action Objective
2.局部变量和形参变量添加为AO得成员,值为undefined(隐式声明提升)
3.把传入的实参赋值给AO对象(拓展知识:arguments和形参变量相关技术)
4.把局部函数得名字作为AO对象的成员名,函数体赋值给AO对象(局部函数得隐式声明提升)
全局预编译
js:脚本运行时 会先进行预编译
1.生成一个GO===>Globle Objective对象
2.把脚本中得声明变量全部作为GO对象成员名
3.把全局函数得名字作为GO对象的成员名,函数体赋值给GO对象
4.看是不是浏览器环境中得js脚本 还会执行一步 GO给window对象共享成员
5.跑代码