js词法分析

/词法分析

1先分析参数

2在分析变量声明

3分析函数声明

一个函数能使用的局部变量就从上面的3步分析而来

具体步骤:

0:函数运行前的1瞬间,生成Active Object(活动对象),下称AO

1:把声明的参数形成Ao的属性,参数的值即属性的值;;接收参数,形成AO相应属性的值

2:分析变量声明,如var age;

如果Ao上还没有age属性,则添加age属性,值是undefined;

如果AO上已经有age属性,则不做任何处理

3 分析函数声明,如function foo(){};

则把函数赋给AO.foo()属性

注:如果此前foo属性已经存在,则被无情覆盖

/

function t(age){

alert(age);

}

t(5);//5

t();//undefined

/词法分析过程:

AO(age:undefined)

运行过程:

t(5)    AO.age=5;alert(AO.age);//5

t()    AO.age没有得到赋值,还是undefined/

function t2(){

  var age=99;

  alert(age);

}

  t2(5);

/分析过程:

0:形成AO={};

1: 分析形参 AO={age:undefined;}

2:分析var age,发现AO已有age属性,不做任何影响

执行过程:

AO.age=99;

alert(AO.age);//99

/

 

function a(b){

  alert(b);

  function b(){

  alert(b);

  }

  b();

}

a(1);

/分析过程

0:AO={};

1:分析参数AO={b:undefined;}

接收参数AO={b:1}

2:分析var声明,此函数没有var

3:分析函数声明,AO={b:function(){alert(b);}}

执行期

alert(b);//function

b();//由作用域寻找到a函数中的b,即function ,alert出来

/

 

function a(b){

  alert(b);

   b=function(){

  alert(b);

  }

  b();

}

a(1);

posted @ 2016-02-04 11:38  AutismTune  阅读(163)  评论(0编辑  收藏  举报