首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript:递归函数返回未定义的现有值

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

Stack Overflow用户
提问于 2016-03-17 18:59:30
回答 1查看 1.6K关注 0票数 3

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

当满足条件时,循环将正确停止。但是,只有当匹配发生在数组中的第一个键(索引0)时,它才返回键的值,并返回其余的“未定义”。

我的错误在哪里?下面是更好地说明的代码:

代码语言:javascript
运行
复制
    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?!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-17 19:01:26

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

代码语言:javascript
运行
复制
  // recall with updated index
  return loop(arr,i); 
}

函数loop的最后调用将返回一个值,而对同一个函数的其他调用则返回undefined。所以你最终得到了undefined

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36069423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档