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);
打印结果
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];
}
}