javascript词法分析

javascript词法分析

<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:分析参数 ao={b=undefined},马上变成ao={b=1}
 2:分析var声明,没有
 3:分析函数声明,没有
 (注:b=function(){}是一个赋值过程,在执行期才有用)
 */
 /*词法分析
  分析3样东西
  第一步:先分析参数
  第二步:再分析变量声明
  第三步:分析函数声明
  一个函数能使用的局部变量,就从3步而来
  具体步骤:
  0:函数运行前的一瞬间,生成active object
  1:a.把声明的参数作为ao对象的属性,值都是undefined
   b.接收实参,形成ao对应属性的值
  2:分析变量声明,如var
   如果ao上还没有此变量声明,则把此变量作为ao属性,
   值是undefined
   如果ao上已经有了此属性,则不做任何影响
  3:分析函数声明,如function t(){}
  则把此函数作为ao的属性
  注:如果此前ao已经有了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>

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。