回调如何在使用Javascript的递归调用中工作?

回调如何在使用Javascript的递归调用中工作?,javascript,recursion,callback,Javascript,Recursion,Callback,我想知道Javascript是如何处理递归调用中的回调的,是在每次递归调用时将回调直接推送到队列中,还是在调用使用基本大小写解析之后 测试用例代码 function enums(start,end,callback) { callback(start); if (end == 1) return 1; else{ return enums(start + 1, end - 1, callback); } } var callback = function (nu

我想知道Javascript是如何处理递归调用中的回调的,是在每次递归调用时将回调直接推送到队列中,还是在调用使用基本大小写解析之后

测试用例代码

function enums(start,end,callback) {
  callback(start);
  if (end == 1)
    return 1;
  else{
    return enums(start + 1, end - 1, callback);
  }
}

var callback = function (number){
   console.log(number);
}
enums(1,10,callback);

递归调用的处理方式与任何其他编程语言相同。 代码的执行方式就像在数组上迭代并在循环中调用函数一样。 如果在调用枚举函数后使用setTimeout对计时器进行0毫秒的延时,您会注意到setTimeout回调将在递归返回后执行

function enums(start,end,callback) {
   callback(start);
   if (end == 1)
      return 1;
   else{
      return enums(start + 1, end - 1, callback);
   }
}

var callback = function (number){
  console.log(number);
}
enums(1,10,callback);
setTimeout(function(){ console.log("Rick"); }, 0);

输出应该是:1..10,然后Rick

您可以通过在控制台中运行代码来测试和验证这一点。只要您没有运行异步代码,代码就会按顺序执行。