大牛帮忙看看为啥我的js递归执行结果为undefined

function a(arr, result){
if(!result){
result = [];
}
if(arr.length > 0){
result.push(arr[0]);
arr.splice(0,1);
}else{
return result;
}
}

var aa = a([1,2,3,4,5]);
console.log("result ==",aa);

你这没有递归,递归需要自己调用自己,你把数组顶部元素移除后没有再调用自身接着处理移除的数组。

 function a(arr, result){
if(!result){
result = [];
}
if(arr.length > 0){
  result.push(arr[0]);
  arr.splice(0,1);
  a(arr,result);
}
return result;
}
var aa = a([1,2,3,4,5]);
console.log("result ==",aa);

或者

 function a(arr, result){
if(!result){
result = [];
}
if(arr.length > 0){
result.push(arr[0]);
arr.splice(0,1);
a(arr,result);
}else{
return result;
}
}
var aa=[]
a([1,2,3,4,5],aa);
console.log("result ==",aa);

函数并非每个分支都有返回的结果,所以可能aa为空。