为什么我的递归 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')
以下函数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')