js执行三部曲
1、语法解析(语义分析):通篇扫描查看语法是否有误。如少了或多了一个括号
2、预编译
3、释放执行上下文
预编译:预编译会发生在函数执行的前一刻
预编译过程有四步
1、生成一个AO对象(Activation Object): 执行期上下文
其实执行期上下文是函数执行时产生的存储库(作用域)
2、找形参和变量声明,挂在AO对象上,成为AO的属性,并赋初值为undefined
3、形参和实参对应,把实参的值赋给形参
4、在函数体里面找函数声明(不包含函数表达式)
这四部完了就开始执行