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

fle*_*len 0 javascript recursion function 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
Run Code Online (Sandbox Code Playgroud)

编辑:哎...当然!谢谢你的回答,所有这些都很完美.

nem*_*035 6

该函数不返回任何内容,因为您已将其定义为不返回长度<= 100的输入的任何内容.

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

如果希望递归的结果传播回来,则必须添加该return语句.

  • 对吧.您必须将其视为嵌套链.第一次运行将调用另一个函数,但是从来没有返回发送它. (2认同)