JavaScript 回调和递归

一、回调函数

在一个函数中执行另外一个函数,并且这个另外的函数必须以参数方式传入的,这个另外的函数就是回调函数

function fn(fn1){
       fn1(); 
}

fn(function(){
    console.log("aa");
})

回调函数的特点:

  • 函数中不关心回调函数做了什么,也不关心回调函数是谁,只需要在需要执行的时候执行它
  • 回调函数中this的指向将会重定向到window

二、递归

递归,当前函数内,满足条件时,调用当前函数自身,这就叫做递归
递归的特点

  • 递归特征是先进后出
  • 递归可以深度遍历

1、递归特征是先进后出

function fn(n){
    n++;
    if(n<20){
        var s=fn(n);
        console.log(s,"+++++");
    }
    console.log(n,"_____");
    return n;
}

   var s=fn(0);
   console.log(s);

打印结果
在这里插入图片描述
2、递归可以深度遍历

// 广度,同一级下多个内容,广度遍历用for in 
 var obj = {a: 1,b: 2,c: 3,d: 4,e: 5};
 for(var prop in obj){
     console.log(prop);
 }

// 深度  不同级下的内容 深度遍历用递归
var o = {
            a: {
                b: {
                    c: {
                        d: {
                            e: {
                                f: 1
                            }
                        }
                    }
                }
            }
        }
        
getProp(o)
function getProp(o){
    for(var prop in o){
        if(typeof o[prop]==="object"){
            console.log(prop);//a,b,c,d,e
            getProp(o[prop])
        }else{
            console.log(prop);//f
            console.log(o[prop]);//1
        }
    }
}

补充 :while也可以进行深度遍历

while(typeof o==="object"){
    for(var prop in o){
        console.log(prop);//a,b,c,d,e
        o=o[prop];
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44157964/article/details/104417745
今日推荐