javascript函数'预解析'功能

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head> 
 </head>

 <body>
  <script type="text/javascript">
 
      var x=1,y=0,z=0;

   function add(n){n=n+1;return n}
   y=add(x);
   function  add(n){n=n+3;return n;}
   z=add(x);
   alert(y+'-------'+z);
 //=========================
     var user_name='steve';
  function f1(){

      alert(user_name);//output:undefined.
   ///原因:js函数具有预解析功能.在这个f1函数中中,已经知道有一个user_name的变量,只是在它执行第一个alert方法的时候,还没有赋值.
   ///并且这个函数内的变量和全局的同名,所以f1函数内部的变量优先使用.所以就变成了->undefined.
   var user_name='yzk';//如果这个没有var 变量的话,那么结果分别为:steve yzk.原因:都是全局变量.第一个的赋值为steve,第二个重新赋值为yzk.
   alert(user_name);
  }

  f1();
  </script>
 </body>
</html>

posted @ 2013-07-02 14:27  nqsan  阅读(168)  评论(0编辑  收藏  举报