<html>
<script type="text/javascript">
function a(b){
alert(b);
function b(){
alert(b);
}
b();
}
//a(1);
/*ao{b=fun}*/
function aa(b){
alert(b);
b=function (){
alert(b);
}
b();
}
aa(1);
/*
0:ao={}
1:分析參數(shù) ao={b=undefined},馬上變成ao={b=1}
2:分析var聲明,沒(méi)有
3:分析函數(shù)聲明,沒(méi)有
(注:b=function(){}是一個(gè)賦值過(guò)程,在執(zhí)行期才有用)
*/
/*詞法分析
分析3樣?xùn)|西
第一步:先分析參數(shù)
第二步:再分析變量聲明
第三步:分析函數(shù)聲明
一個(gè)函數(shù)能使用的局部變量,就從3步而來(lái)
具體步驟:
0:函數(shù)運(yùn)行前的一瞬間,生成active object
1:a.把聲明的參數(shù)作為ao對(duì)象的屬性,值都是undefined
b.接收實(shí)參,形成ao對(duì)應(yīng)屬性的值
2:分析變量聲明,如var
如果ao上還沒(méi)有此變量聲明,則把此變量作為ao屬性,
值是undefined
如果ao上已經(jīng)有了此屬性,則不做任何影響
3:分析函數(shù)聲明,如function t(){}
則把此函數(shù)作為ao的屬性
注:如果此前ao已經(jīng)有了t屬性,則以前的t被覆蓋
*/
function t1(age){
alert(age);
}
//t1(1);
function t2(age){
var age = 99;
alert(age);
}
//t2(1);
function t3(g){
var g = 'hello';
alert(g);
function g(){
}
alert(g);
}
//t3();
</script>
</html>