You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js简易函数返回undefined而非数组问题排查

问题原因及修复方案

你的函数出现问题的核心原因是递归调用分支未返回结果:

当用户选择添加更多用户(输入Y)时,你在if分支里调用了递归函数userTabCreation_stringList(inUserList),但没有将这个调用的返回值通过return传递出去。此时当前函数执行完递归调用后,没有任何return语句,JavaScript函数默认会返回undefined。

只有在用户选择停止添加的else分支里,你才返回了正确的数组。但当存在多次添加操作时,最外层的函数调用会因为中间递归分支没有返回值,最终得到undefined。

修复方法

只需要在递归调用时加上return,让递归的返回值逐层传递回最外层调用:

var readline = require("readline-sync");

function userTabCreation_stringList(inUserList = [])
{
    inUserList.push(readline.question("Veuillez entrer le nom du premier utilisateur : "));
    if (readline.question("Voulez vous ajouter un utilisateur supplementaire ? (Y/y : yes)").toUpperCase() === "Y")
    {
        // 加上return,将递归结果返回给上层调用
        return userTabCreation_stringList(inUserList);
    }else
    {
        console.log(inUserList) // 此时数组正常
        return inUserList;
    }
}

// Main
userList = userTabCreation_stringList();
console.log(userList); // 现在多元素数组也能正确输出

执行逻辑说明

当用户多次选择添加时,每次递归调用的结果都会通过return传递给上一层函数,直到最外层调用接收到最后一次递归返回的完整数组,这样userList就能正确获取到最终的数组值了。

内容的提问来源于stack exchange,提问作者Eeral

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:10:35