javascript函数只返回未定义的
下面的javascript函数只返回未定义的javascript函数只返回未定义的,javascript,Javascript,下面的javascript函数只返回未定义的 function digital_root(n) { var x = String(n).split(''); if (x.length > 1) { sum = x.reduce((accumulator, value) => parseInt(value) + accumulator, 0); digital_root(sum); } else { console.log(x); retur
function digital_root(n) {
var x = String(n).split('');
if (x.length > 1) {
sum = x.reduce((accumulator, value) => parseInt(value) + accumulator, 0);
digital_root(sum);
} else {
console.log(x);
return x;
}
}
> digital_root(12)
undefined
但是,在节点中运行时,它会打印正确的值。那么为什么它返回未定义的值呢
> digital_root(12)
[ '3' ]
undefined
如果我取出
console.log(x)
语句,函数仍然返回未定义的
function digital_root(n) {
var x = String(n).split('');
if (x.length > 1) {
sum = x.reduce((accumulator, value) => parseInt(value) + accumulator, 0);
digital_root(sum);
} else {
console.log(x);
return x;
}
}
> digital_root(12)
undefined
第一次运行函数时,它进入
if
块,在那里它用参数digital\u root(3)
再次调用自己
现在首先处理这个“内部”调用,这次进入else
块,在那里发生console.log(x)
调用,然后return['3']
显式地将该值返回给外部函数调用,因此返回值不会显示在控制台上
内部调用返回值后,外部函数终止,因为没有什么事情可做,所以外部函数永远不会返回任何东西
如果没有明确的
返回
语句,函数确实有一个默认返回值未定义
。。我需要为递归调用包含return
完整的代码应该如下所示
function digital_root(n) {
var x = String(n).split('');
if (x.length > 1) {
sum = x.reduce((accumulator, value) => parseInt(value) + accumulator, 0);
return digital_root(sum);
} else {
console.log(x);
return x;
}
}
如果我取出
console.log(x)
语句,函数仍然只返回undefined。但是,我知道应该返回x
,因为它可以打印。还是我误解了一些基本的东西?if true分支中的返回声明在哪里?@MarianTheisen你是对的,这就是问题所在。我没有意识到我也需要一个返回声明。