java学习

java学习

 

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>

posted on 2014-12-06 16:47 杨军威 阅读(195) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜