以下函数返回undefined。为什么呢?
function noReturn(arg) {
arg += " bar";
if (arg.length <= 100) noReturn(arg);
else {console.log(arg); return arg;}
}
noReturn("foo");
//logs in the console: "foo bar bar bar bar....", but returns undefined
编辑:哎...当然!谢谢你的回答,所有这些都很完美。
答案 0 :(得分:6)
该函数不返回任何内容,因为您已将其定义为不为长度为&lt; = 100的输入返回任何内容。
function noReturn(arg) {
arg += " bar";
if (arg.length <= 100) noReturn(arg);
// ^---- no return statement
else {console.log(arg); return arg;}
}
如果希望递归的结果传播回来,则必须添加return
语句。
答案 1 :(得分:1)
你必须做return noReturn(arg);
。否则,您只是递归调用它而不返回值。
答案 2 :(得分:1)
因为你永远不会从最初的函数调用返回。
function noReturn(arg) {
arg += " bar";
if (arg.length <= 100) return noReturn(arg);
else {console.log(arg); return arg;}
}
noReturn('foo')