为了账号安全,请及时绑定邮箱和手机立即绑定

js中递归调用时参数是否会改变

js中递归调用时参数是否会改变

温温酱 2018-11-14 13:14:58
如下所示的一个递归函数,为什么args.concat(i)没有根据循环增加?args是一个引用类型,在我的想法中,这个args会在循环时把0-9都放进去。var loop = (fn, n, args = []) => {  if (n === 0) {    return fn.apply(fn, args);  }  for (var i = 0; i <= 9; i++) {    loop(fn, n - 1, args.concat(i)); // 这里的args.concat(i),在递归的每个栈都是“新”的  }}loop((...a) => console.log(a), 2);//结果: [0,0]  [0,1]  ...
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

因为args.concat是返回新的数组,不会影响原来的数组。


查看完整回答
反对 回复 2018-12-07
  • 1 回答
  • 0 关注
  • 655 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号