【发布时间】:2018-04-25 04:51:29
【问题描述】:
当我调用递归函数时,调用的结果会去哪里?
function reverse(str){
if (str.length == 1){
return str;
}
rev = reverse(str.substr(1)) + str.charAt(0);
}
reverse("String");
console.log(rev); // ----> "undefinedS" - Only the last call is saved.
如果我只是返回值,它似乎很好。结果存储在哪里?
function reverse(str){
if (str.length == 1){
return str
}
return reverse(str.substr(1)) + str.charAt(0);
}
reverse("String") // ----> "gnirtS"
【问题讨论】:
-
它不会被存储在任何地方,如果您在函数中没有
return,它将一直运行到完成并且返回值将是未定义的 -
这里有一个提示:不返回任何内容,对
reverse的调用将返回undefined。所以你得到undefinedS,因为你连接undefined(reverse(str.substr(1))的结果)和S(str.charAt(0)的结果)。 -
不是未定义的……是未定义的第一个操作结果。
-
函数返回的内容和你分配给全局变量
rev的内容是有区别的。 -
您的函数没有返回任何内容,因此在您第二次调用时,它将返回
undefined,这就是您得到undefinedS的原因
标签: javascript recursion