我知道有关于此的类似问题,但这是一个非常简单的版本。我不明白为什么我不能在这里返回变量,虽然我可以看到警报中的值。 这工作:为什么我可以提醒但不能返回?
function theTest(x){
var myNum = x + 1
if(myNum == 5){
alert(myNum);
}
else{
theTest(myNum);
}
}
theTest(0);
但这返回undefined:
function theTest(x){
var myNum = x + 1
if(myNum == 5){
return myNum;
}
else{
theTest(myNum);
}
}
alert(theTest(0));
为什么为什么为什么?
需要'返回theTest(myNum的);' – Doorknob
这个问题实际上是很有趣的。第一个函数将显示警报的原因是因为当您仍在myNum变量的范围内时调用警报。第二个函数将执行相同数量的迭代,但由于递归函数返回未定义,因此不能传回值。 Arvind有一个可以正常工作的解决方案。 – cgatian
cgatian,你会发布作为答案,所以我可以给你信用,请。这个问题不是关于如何,我意识到如何去做。我无法弄清楚为什么,尽管我知道范围是问题。我想给你信用的解释。 –