JS-闭包、回调、递归

2017-10-22  本文已影响0人  大大的小小小心愿

一、闭包
函数内部创建个函数形成闭包
闭包的应用
二、回调
在一个函数中,把另一个函数的函数名当一个参数,进行调用。

function a(){
        console.log("我是函数a");
    }
    function b(funa){
        funa();
    }
    b(a);

利用回调函数,在死循环中模拟定时器

function myTime(fun,time){
        var date = new Date;
        for(;;){
            var date2 = new Date;
            if(date2 - date >= time){
                break;
            }
        }
    }

    myTime(function(){"time时间后打印了我"},1000);

三、递归
1、 函数内部调用函数本身(死循环,一般给一个条件,让其退出死循环)

  function test(){
     test();
  }

2、递归面试题

var i = 10;
  function test(){
    var a = i--;
    if(i <= 0){
        return;
    }
    console.log(a);
    test();
}
test();  //打印结果 10 9 8 7 6 5 4 3 2

var i = 10;
    function test(){
        var a = i--;  
        if(i < 0){
            return;  
        }
        test();  
        console.log(a); 
    }
test();        //结果打印出   1 2 3 4 5 6 7 8 9 10

思路:递归执行完后,再return 上一级、console.log a的值

a.png

2、利用递归实现数的累加

function add(num){
if(num == 1){
    return 1;
}
return num + add(num -1);
}
console.log(add(3));
上一篇下一篇

猜你喜欢

热点阅读