词法分析
分析3样东西
第一步: 先分析参数
第二步:在分析变量声明
第三步:分析函数声明
一个函数能使用的局部变量,就从上面的三步分析而来
具体步骤:
0:函数运行前的一瞬间 生成Active Object(活动对象 简称AO)
1:
1.1 函数声明的参数,形成AO的属性,值全是undefined
1.2 接受实参,形成AO相应的属性的值
2: 分析变量声明声明如var age
如果AO上还没有age属性,则添加AO属性,值是undefined
如果AO上已经有age属性,则不做任何影响
3: 分析函数声明 ,如 function foo(){},
则把函数付给AO.foo属性
注:如果此前foo属性已存在 则被无情的覆盖了
function a(b){
alert(b);
function b(){
alert(b);
}
b();
}
a(1);
分析期
AO={}
AO={b:undefined}
AO={b:1}
分析变量声明:var 没有
分析函数声明
AO={b:function(){alert b;}}
执行期间
alert(b);
b();
输出两个函数体b