为什么我的递归JavaScript函数没有返回字符串?

时间:2017-01-04 03:44:38

标签: javascript function recursion return-value

以下函数返回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
编辑:哎...当然!谢谢你的回答,所有这些都很完美。

3 个答案:

答案 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')