1.创建 AO 对象 Activation Object(执行期上下文,作用是理解的作用域,函数产生
的执行空间库)
2.找形参和变量声明,将变量和形参名作为 AO 属性名,值为 undefined
相当于 AO{
a : undefined,
b : undefined
}
3.将实参值和形参统一(把实参值传到形参里)
4.在函数体里面找函数声明,值赋予函数体
例子(面试题):
这个例子的形参是(a),变量声明也是 a
上面的例子按四部曲变化如下:
找形参和变量声明,将变量和形参(a)名作为 AO 属性名,值为 undefined ,AO{
a : undefined,
b : undefined,
}
(把实参值传到形参里)AO{
a : 1,
b : undefined,
}
function a () {}和 function d () {}都是函数声明,但是 var b = function (){}不是。AO{
a : function a () {},
b : undefined,
d : function d () {}
}
执行第一行 console.log(a);时,用的是 AO{
a : function a () {},
b : undefined,
d : function d () {}
}
执行 var a =123;改变的是 AO{
a : 123,
b : undefined,
d : function d () {}
}
在 b = function (){}时 AO{
a : 123,
b : function () {},
d : function d () {}
}