1,这个递归函数返回这个j=[1, 2, 3, 4, 5]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
var a = [1, 2, 3, 4, 5, [6, 2, 3, 4]];
function copyarr(obj) {
var j = [];
for(var i = 0; i < obj.length; i++) {
if(typeof obj[i] == 'object') {
copyarr(obj[i]);
} else {
j[i] = obj[i];
}
}
return j;
}
var j = copyarr(a);
console.log(j) //
</script>
</body>
</html>
我的理解是这个函数在进行递归调用自己的时候,把这个j的值修改改变为[6,2,3,4,5],而最后return了这个j,最终返回结果是循环没进行到递归函数的数值,是不是进行到递归函数之后无论如何改变这个j,只要是操作之前的数值,到最后递归完成之后还是不会改变?
copyarr里的j只是局部变量,执行copyar(a)只会返回第一次的j