递归处理字面量对象返回2个数组的函数返回undefined原因排查
问题原因分析
核心问题是递归调用分支缺少return语句,逻辑说明如下:
- JavaScript 函数默认规则:如果没有显式执行return语句,函数返回值为
undefined - 你的代码中仅在「所有内容处理完成」的分支写了return,仅最内层的递归调用会走到这个分支
- 当函数走到「仍有未处理部分」的分支时,你只发起了递归调用,但没有把递归函数的返回值向外传递,外层函数执行完没有任何返回动作,所以顶层调用拿到的结果就是
undefined
修复方案
把递归调用行修改为返回递归结果即可:
if (初始对象仍有未处理部分){ // 新增return,把递归结果逐层向外传递 return filterObject(untreatedObject, a1, a2); } else if (所有内容处理完成){ console.log(a1) console.log(a2) return { a: a1, b: a2}; }
修复后顶层调用即可正常拿到返回的数组对象。
内容的提问来源于stack exchange,提问作者RomanSmoll
相关产品推荐
相关产品推荐

