function capitalizeFirst(arr, new_arr) {
if (arr.length === 0) return new_arr;
let str = arr.pop();
console.log(str);
return capitalizeFirst(arr, new_arr.push(str));
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码。目标是通过此练习练习递归。我给函数以下参数
capitalizeFirst(['car','taco','banana'], []);
new_arr显然是一个数组。为什么推方法不起作用?另外,当我将return语句更改为
return capitalizeFirst(arr, [].push(str));
并与chrome调试器一起使用,数字1一直传递到数组而不是arr.pop()值。是什么导致此行为?我也没有在实现中添加首字母大写。如果有人想知道为什么我的代码没有按照方法名称的说明进行操作,那将只是在push方法中进行replace()调用。
谢谢你的帮助
从W3C:
push()方法将新项目添加到数组的末尾,并返回新的长度。
第一个循环应该没问题,但是因为您是.push递归传递的,所以第二个循环看到的是数字而不是数组,因为它push返回一个数字。
推入自己的行,然后仅传递new_arr作为参数。