繁体   English   中英

Javascript:递归函数返回未定义的现有值

[英]Javascript: recursive function returns undefined for existing value

我试图使用递归函数循环数组。 如果循环匹配给定的正则表达式模式,则循环应停止并返回键的值。

满足条件时,循环将正确停止。 但是,只有在数组中的第一个键(索引为0)匹配时,它才返回键的值,而其余键则返回“ undefined”。

我的错在哪里 这是可以更好地说明的代码:

    function loop(arr,i) {
  var i = i||0;
  if (/i/gim.test(arr[i])){
    console.log("key value is now: " + arr[i])
    return arr[i]; // return key value
  }
  // test key value
  console.log("key value: " + arr[i]); 

  // update index
  i+=1; 

  // recall with updated index
  loop(arr,i); 
}

console.log( loop(["I","am", "lost"]) ); 
// "key value is now: I"
// "I" <-- the returned value

console.log(  loop(["am", "I", "lost"])  ); 
// "key value: am" 

// "key value is now: I" <-- test log 
// undefined <-- but the return value is undefined! why?!

您必须从递归调用中return值,

  // recall with updated index
  return loop(arr,i); 
}

对函数loop的最后一次调用将返回一个值,但是对同一函数的其他调用返回undefined 所以最后您最终变得undefined

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM