返回值在递归中显示为undefined

时间:2017-10-14 05:26:26

标签: javascript

我的javascript代码遇到了一些问题。在我的代码中,返回函数是:

        var datas = {};
        datas['results'] = [];
        var j = 0;
        function brand(j) {

            if (j >= data.result[0].brand.length) {
                //console.log(datas);
                return brand(j + 1);
            }
            Brand.findById(data.result[0].brand[j], function (err1, result1) 
              {

                datas['results'][j] = {
                    brand: result1.brand_name,
                    dosage: result1.dosage_id
                };

                brand(j + 1);
                //console.log(datas);
            });
            //console.log(datas);
        }
        value = brand(j);
        console.log(value);

在控制台上打印输出,即

console.log(datas)

我得到了预期的输出,但当我获取返回值时,它显示未定义的

value = brand(j);
console.log(value); // value is undefined

有人可以指导我解决这个问题吗? 万分感谢

1 个答案:

答案 0 :(得分:1)

您正在改变数据对象本身,这就是console.log(数据)工作的原因。此外,要使递归起作用,您需要

$str = @preg_replace('/\&\#([0-9]+)\;/me', "code2utf('\\1',{$lo})",$str);
$str = @preg_replace('/\&\#x([0-9a-fA-F]+)\;/me', "codeHex2utf('\\1',{$lo})",$str);

假设你的其余代码是正确的

编辑:在您发布其余代码之后,很明显您的问题在于异步代码。基本上,品牌功能没有任何价值,但它一直在运行。你有几种方法来解决这个问题,因为我不知道你在哪个堆栈,我建议你去看一些诺言库