和C不同
javascript中如果要用递归的话,似乎是不会保护现场,变量在子函数中更改了之后,母函数中相应的变量也发生了变化,不知道有没有比较好的解决这个问题的办法。一段小程序说明这个问题<html>
<body>
  <script type="text/javascript">
   n=0;
    test(10);
    function test(h)
    {
      a=h;
      if(n==1)
      {
       return 0;
      }
      n++;
      alert("oringinal a is " + a);
      test(5);
      alert("final a is" + a);
      
    }
  </script>
</body>
</html>

解决方案 »

  1.   

    局部变量加var<html> 
    <body> 
      <script type="text/javascript"> 
      n=0; 
        test(10); 
        function test(h) 
        { 
          var a=h; 
          if(n==1) 
          { 
          return 0; 
          } 
          n++; 
          alert("oringinal a is " + a); 
          test(5); 
          alert("final a is" + a); 
          
        } 
      </script> 
    </body> 
    </html>