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

Why is my recursive JavaScript function not returning the string?

以下函数returns未定义。为什么?

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

编辑:哎哟……当然!谢谢你的回答,他们都很完美。

该函数不 return 任何内容,因为您已将其定义为不 return 长度小于等于 100 的输入的任何内容。

function noReturn(arg) {
  arg += " bar";
  if (arg.length <= 100) noReturn(arg); 
  //                    ^---- no return statement
  else {console.log(arg); return arg;}
}

如果要将递归的结果传回,必须添加return语句。

你必须做一个return noReturn(arg);。否则你只是递归调用它而不返回值。

因为您永远不会从初始函数调用中返回。

function noReturn(arg) {
  arg += " bar";
  if (arg.length <= 100) return noReturn(arg); 
  else {console.log(arg); return arg;}
}

noReturn('foo')