再谈javascript的词法分析

由一道题开始:

function t3(greet){

var greet="hello";

alert(greet);

function greet(){}

alert(greet);}

}

t3(null);

输出:hello,function

function t3(greet){

var greet;

alert(greet);

function greet(){}

alert(greet);}

}

t3(null);


}

输出:function,function

解析:词法分析的过程

0:创建AO={}
1:

     1.1 分析参数 AO={greet:undefined}

     1.2 分析参数 AO={greet:null}

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

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


function a(b){

alert(b);

b=function(){

alert(b);

}

b();

}

a(1);

词法分析的过程:

0:AO={}

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

2::分析 var 声明 ,么有

3:分析函数声明??没有!

注意的是b=function(){},是一个赋值过程,在执行期才有用


你可能感兴趣的:(再谈javascript的词法分析)