预编译发生在执行之前
1;初始化全局对象 空对象 Global Objec
2:全局作用与下 函数声明提升。
Global Objet {
<function> foo: undefined
}
3:全局作用有下 变量声明提升
Global Objet {
<function> foo: undefined,
a: undefined,
b:undefined,
c:undefined
}
4: 给提升的函数赋值 function
Global Objet {
<function> foo: <function>,
a: undefined,
b:undefined,
c:undefined
}
函数执行前准备
1:初始化Active Objec (AO) 对象
Active Object{}
2: 提升形参
Active Object{
a: undefined,
b:undefinec
}
3:提升函数
Active Object{
a: undefined,
b:undefined,
bar:undefined
}
4:提升变量
Active Object{
a: undefined,
b:undefined,
bar:undefined,
lt:undefined
}
5 给提升的函数赋值 <function>
Active Object{
a: undefined,
b:undefined,
bar:<function>, 'undefined' ---> <function>
lt:undefined
}
6: 形参实参相统一
Active Object{
a: 1, undefined--->1
b:2, undefined--->2
bar:<function>,
lt:undefined
}