Javascript 退出递归函数

Javascript 退出递归函数,javascript,recursion,enumeration,Javascript,Recursion,Enumeration,我循环一个复杂的JSON对象,但我想在n次迭代后停止循环 n = 0; maxIterations = 100; ObjectValues = function(v, k){ if(n == maxIterations){ if (typeof v == "object") { for (var kp in v) { if (Object.hasOwnProperty.call(v, kp)) { ObjectValues(v[kp],

我循环一个复杂的JSON对象,但我想在n次迭代后停止循环

n = 0;
maxIterations = 100;
ObjectValues = function(v, k){
  if(n == maxIterations){
    if (typeof v == "object") {
      for (var kp in v) {
        if (Object.hasOwnProperty.call(v, kp)) {
          ObjectValues(v[kp], k != undefined ? k + "." + kp : kp);
        }
      }
    } else {
      console.log(k + ":" + v);
      n++;
    }
  }else{
    console.log('I should end the function');
    return false;
  }
};

但是我不能用return false退出函数。即使在我尝试用return false退出函数后,函数仍会被调用。

据我所知,您希望递归打印maxiteration键及其值:

n = 0;
maxIterations = 100;
ObjectValues = function(v, k){
  if(n < maxIterations){
    if (typeof v == "object") {
      for (var kp in v) {
        if (Object.hasOwnProperty.call(v, kp)) {
          if(! ObjectValues(v[kp], k != undefined ? k + "." + kp : kp) )
            return false;
        }
      }
    } else {
      console.log(k + ":" + v);
      n++;
    }
    return true;
  } else {
    console.log('I should end the function');
    return false;
  }
};
n=0;
最大迭代次数=100;
ObjectValues=函数(v,k){
if(n<最大迭代次数){
if(typeof v==“对象”){
对于(v中的var kp){
if(Object.hasOwnProperty.call(v,kp)){
如果(!ObjectValues(v[kp],k!=未定义的?k+“+kp:kp))
返回false;
}
}
}否则{
console.log(k+“:”+v);
n++;
}
返回true;
}否则{
log('我应该结束函数');
返回false;
}
};

尝试
如果(n>=maxIterations)
并让我们知道。n永远不会大于maxIterations。所以这不起作用。当我这样做的时候:那么,你知道你没有在if的情况下增加
n
吗?我知道,但只是在else中。该函数查看对象中的所有对象,如果对象中没有其他对象,则打印k和v。这个信息我想得到n次。这就是为什么我在else的情况下增加n,那么告诉我们到底发生了什么?你说“函数被调用,即使在我试图用return false退出它之后。”如果你能深入到
return false则表示您已经在函数中,它已经被调用。我不明白这个问题。