在递归函数中获取“变量未定义返回代理”

时间:2013-10-30 22:32:21

标签: javascript jquery

我试图检查是否采用了一个值,如果是,则跳转到下一个值。这是通过简单的递归

完成的
function recur(id){
    if($('#'+id).length != 0){ // checking if id exists on page
       recur(id++);
    }
    else{
        return id;
    }
}

$.(document).ready(function(){
     var x = recur(1);
     alert(x);
});

但是我收到了这个错误:

x is undefined
 return proxy

1 个答案:

答案 0 :(得分:2)

您缺少递归调用的return语句:

function recur (id){
  if($('#'+id).length != 0){ 
      return recur(id++); // add return here
  }
  else{
      return id;
}

没有它,只有终止案例会返回一个值,但它不会传递给堆栈。因此,最顶级的recur调用确实会返回undefined

我个人不会使用递归,而是迭代地执行:

function nextId(id) {
    while ($('#'+id).length != 0) {
        ++id;
    }
    return id;
}