当前位置: 移动技术网 > IT编程>网页制作>CSS > 词法分析步骤

词法分析步骤

2018年12月07日  | 移动技术网IT编程  | 我要评论
概念

词法分析:

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

第一步:先分析参数

第二步:再分析变量声明

第三步:再分析函数声明

具体步骤:

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属性,则会被无情的覆盖。

示例1

function t2(age){

var age = 99;

alert(age);

}

t2();

分析过程:

0:形成ao = {}

1:

1.1分析形参ao{age:undefined}

1.2接收实参ao{age:undefined}

2: 分析变量声明,发现ao上已有age属性,不做任何变化。

执行过程:

ao.age = 99;

alert(age);//99

示列2

// 这题要仔细分析哦

function t3(greet){

var greet='hello';

alert(greet);

function greet(){}

alert(greet);

}

t3(null);

词法分析:

0:形成ao = {}

1:

1.1分析形参 ao = {greet:undefined}

1.2接收实参ao{greet:null}

2: 分析变量声明,发现ao上已有greet属性,不做任何变化。

3: 分析函数声明,被无情覆盖,所以ao = {greet:function greet(){}}

执行过程:

greet = ‘hello’;

alert(greet);

alert(greet);

结果当然是alert出来两个hello。

示例3

function a(b){

alert(b);

function b(){

alert(b);

}

b();

}

a(1);

词法分析:

0:形成ao = {}

1:

1.1 分析形参 ao = {b:undefined}

1.2 接收实参 ao = {b:1}

2: 分析变量声明,没有变量声明

3:分析函数声明,之前的ao.b属性全部被无情覆盖,ao = {b:function b(){}}

执行过程:

alert(b);

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

留个作业

思考:如果把上面的代码修改后,如下,结果又是如何?

function a(b){

alert(b);

b=function(){

alert(b);

}

b();

}

a(1);

【欢迎留言提交答案】

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网