0

我试图检查一个值是否被采用,如果它是然后我跳到下一个值。这是通过简单的递归完成的

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
4

1 回答 1

2

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

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

没有它,只有终止的情况会返回一个值,但它不会被传递到堆栈中。所以最上面的recur调用实际上是 return undefined

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

function nextId(id) {
    while ($('#'+id).length != 0) {
        ++id;
    }
    return id;
}
于 2013-10-30T22:36:23.030 回答