正在回答 回答被采纳积分+1
同学你好,因为需要把本次调用返回的结果数组,添加到上一次调用的结果数组中。具体参考如下:
1、第一次调用deepClone时,创建result = [],循环遍历[33, 44, 11, 22, [77, 88, [33, 44]]] 。依次把33, 44, 11, 22加入到数组中,即result=[33, 44, 11, 22]。等遍历到最后一个元素,发现是数组。那么执行result.push(deepClone(arr[i])),里面调用了函数deepClone,所以需要等待第二次调用结束,第一次调用deepClone才会继续往下执行代码。
2、第二次调用,创建result = [],遍历 [33, 44],发现它里面没有数组,执行else中的result.push(arr[i]),此时result=[33, 44] 。即第二次调用deepClone返回值为[33, 44],第二次调用返回结果数组为result = [33, 44]。
3、上面说了,第二次调用结束,才会继续执行第一次的调用,即第二次deepClone(arr[i])的返回值[33, 44],被添加到了第一次创建的result 中。注意第一次的result=[33, 44, 11, 22],所以result.push(deepClone(arr[i]));执行之后,result=[33, 44, 11, 22, [77, 88, [33, 44]]];
如下相当于 result.push([33, 44]);

最后第一次调用返回结果数组为[33, 44, 11, 22, [77, 88, [33, 44]]]。
把上面的内容多看几遍,多理解一下哦。
祝学习愉快~
抱歉老师,忘记贴图了,是下面划线的这个

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星