【问题标题】:JavaScript returns undefined instead of value in recursive function [duplicate]JavaScript在递归函数中返回未定义而不是值[重复]
【发布时间】:2020-05-30 19:40:14
【问题描述】:

我有一个从嵌套数组中获取值的简单函数:

function getVal(arr){
  var el = arr[0];
  console.log(el);
  console.log(Array.isArray(el));
  if(Array.isArray(el)){
    getVal(el);
  }else{
    return el;
  }
}

而且我总是不确定。这是控制台输出:

getVal([["a"]]);
["a"]
true
"a"
false
undefined

据我了解,当满足el === "a" 条件if(Array.isArray(el)) 并且我得到getVal("a") 的递归调用时,会给出未定义的结果。那里发生了什么?还有为什么"a"没有返回?

【问题讨论】:

标签: javascript recursion


【解决方案1】:

Array.isArray(el) 为真时,您还没有从递归函数调用中返回值。像return getVal(el);一样返回它

function getVal(arr){
  var el = arr[0];
  if(Array.isArray(el)){
    return getVal(el);
  }else{
    return el;
  }
}

console.log(getVal([["a"]]));

【讨论】:

    【解决方案2】:

    替换

    getVal(el);
    

    return getVal(el);
    

    【讨论】:

    • 谢谢,成功了!
    猜你喜欢
    • 2017-02-07
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 2017-01-21
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多