作用域的创建阶段 预编译的阶段
js在执行的过程中会先扫描一下整体的语法语句,如果出现逻辑错误或者语法错误,直接报错,货值停止执行,没有错误,会从上到下一行一行执行。
js的预编译对象和ao对象
在执行函数的时候会提前创建一个ao对象
1、创建ao对象(在执行fn函数之前会创建一个ao对象)
ao{
}
2、找形参和变量的声明(将函数内的所有的形参和变量声明储存到ao对象中,value值为undefined)
ao{
a:undefined
c:undefined
d:undefined
b:undefined
}
3、实参和形参相统一
ao{
a:1
c:2
}
4、找函数声明、覆盖变量声明(将所有的函数声明的函数名作为ao对象中的key,函数整体的内容为value,存储到ao对象中)
ao{
a:function(){}
b:function(){}
c:function(){}
}