预编译四部曲:
预编译发生在函数执行的前一刻
- 创建AO对象 Activation 0bject(执行期上下文)
- 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
- 将实参值和形参统一
- 在函数体 里面找函数声明,值赋予函数体
值的输出总结:在前面赋值第一、函数声明第二(表达式不算)、实参第三、其余未赋值则为undefined
函数、实参、形参 当然赋值最高
其实就是提升了变量、形参、函数的声明 同时赋值给形参、函数
条件式函数声明问题
if (1) {
function a() {
}