欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript 回调和递归

程序员文章站 2024-02-01 10:01:04
...

一、回调函数

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

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);

打印结果
JavaScript 回调和递归
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];
    }
}
相关标签: js高级

上一篇: 02 - CSS

下一篇: 几道经典js面试题