先上代码:
javascript
var value=[1,2,3,4,5,6]; var result=[]; var i; function find(i){ if(i<4){ result[i]=value[i] find(i+1); } else return result; } find(0);
用了递归来给result数组赋值,上述代码把value数组的前4个元素赋值给result数组,我只想知道为什么这样写不对,返回的是undefined
先上代码:
javascript
var value=[1,2,3,4,5,6]; var result=[]; var i; function find(i){ if(i<4){ result[i]=value[i] find(i+1); } else return result; } find(0);
用了递归来给result数组赋值,上述代码把value数组的前4个元素赋值给result数组,我只想知道为什么这样写不对,返回的是undefined
没有 return 函数的返回值为undefined
var value=[1,2,3,4,5,6];
var result=[];
var i;
function find(i){
if(i<4){
result[i]=value[i]
return find(i+1);
}else {
return result;
}
}
find(0);
//或者你可以这样写
var value=[1,2,3,4,5,6];
var result=[];
var i;
function find(i){
if(i<4){
result[i]=value[i]
find(i+1);
}
}
find(0);
console.log(result);//就是你想要的结果
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.1k 阅读
你实际上是添加进去了的,但只是没有打印出来而已。不信你执行完你的代码再
console.log(result)
试试。那为啥没打印出来呢?因为控制台执行完之后返回的是find(0)
函数的返回值,而find(0)
中并不会进入else
语句中,所以自然没有返回值。有人会说不是还有find(4)
嘛?,那么我请问,find(4)
你打印了么?