前端学习---闭包、递归


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>原型</title>
    <script>
     //闭包:能够读取其它函数内部变量的函数
     //JS 中每一个函数都是一个个体,子元素可以获取父元素中的信息,但是父元素不能直接获取子元素中的信息。
     //关键是否引用了外部变量。
    window.onload = function(){
        //方法一
      function a(){
          var n = 0;
          function add(){
              n++;
              console.log(n);
          };
          add();
      };
      a();
      //2
      function a1(){
          this.n=0;
          this.add=function(){
              this.n++;
              console.log(this.n);
          };
      };
      var a11 = new a1();
      a11.add();
      //3
      function a2(){
          var n=0;
          this.add=function(){
              n++;
              console.log(n);
          };
      };
      var a22 = new a2();
      a22.add();
      //4
      function a3(){
          var n=0;
         function add(){
              n++;
              console.log(n);
          };
          return add;
      };
      a3()();
      //5
     var a4 = (function a44(){
          var n=0;
         function add(){
              n++;
              console.log(n);
          };
          return add;
      })();//立即执行函数
      a4();




      //闭包传参
      function f(x){
          var i = 0;
          return function(){
                 return x[i++];
          }
      };
      var abc = f(['a','b','c']);
      f();


      var f=( function (x){
          var i = 0;
          return function(){
                 return x[i++];
          }
      }(['a','b','c']));
      f();



      //递归  在函数运行过程中调用自己
      function f(n){
           if(n<=1){
               return 1;
           }else{
               return n*f(n-1);
           }
      };
      f(3);
      $(function(){
        //倒计时
        //方法一:setInterval
        var num = 10;
        setInterval(function(){
            if(num>0){
                num--;
            }else{
                //......
            }
        },1000);
        //方法二:递归
        function f(num){
           if(num>0){
            setTimeout(function(){
                num--;
                f(num);
            },1000);
           }else{

           }
        }
      });
    }
    </script>
</head>
<body>
    
</body>
</html>

猜你喜欢

转载自blog.csdn.net/zhujiarunm/article/details/81989170