js之词法分析

词法分析

词法分析:

  1. 先分析参数;
  2. 再分析变量声明;
  3. 分析函数声明;

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

具体步骤:

1.函数运行前的一瞬间,生成 Active Object(活动对象);

2.分析形式参数

    2.1 函数声明的参数,形成AO的属性,参数的值即属性的值;

    2.2 接收实参,形成AO相应的属性值

3.分析变量声明,如 var xxx

    1.如果AO上还没有 xxx 属性,则添加AO属性, 值是undefined

    2.如果AO上己经有 xxx 属性,则不做任何影响

4.分析函数声明:如 function foo(){}

    1.把函数赋值给 AO.foo 属性

    2.如果此前 foo 属性已存在,则覆盖之前的

如果此前 foo 属性已存在,则覆盖之前的

示例1

function t(age) {
console.log(age);//(1)
var age = 99;
console.log(age);//(2)
function age() {
}
console.log(age);//(3)
}
t(5);

词法分析过程:

1.形成活动对象:AO={};

2.分析形式参数

    2.1分析参数:AO ={age:undefined};

    2.2接收参数:AO={age:5};

3.分析greet变量声明,AO已经有greet属性,因此不做任何影响;

4.分析greet函数声明,AO.greet = function() {} ,被覆盖成函数

执行过程:

(1) 的结果是: function age() {} //因为上述第4步

(2) 的结果是: 99 //age被重新赋值了

(3) 的结果是: 99 //age没有被重新赋值所以还是99

上一篇:Beat 'Em Up Game Starter Kit (横版格斗游戏) cocos2d-x游戏源代码


下一篇:uva 10905 Children's Game (排序)