result.push(deepClone(arr[i]))这里有个疑问

result.push(deepClone(arr[i]))这里有个疑问

定义的deepClone(arr)函数返回的是一个数组,那么result.push(deepClone(arr[i])这一步不还是push了一个数组吗?应该还是引用数组的内存地址吧,是浅克隆?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕久久 2020-09-19 10:23:52

同学你好,该步是深克隆,因为deepClone方法,可以将一个普通的数组,进行克隆,克隆得到的数组与之前的数组,没有关系,如下:

http://img1.sycdn.imooc.com//climg/5f656a6d09e1cb7905220158.jpg

对应到视频中的例子,原数组arr1中有数组项[77,88]:

http://img1.sycdn.imooc.com//climg/5f656aa20987c1da05740094.jpg

该项,在deepClone方法中,会作为一个普通的数组[77,88]再传入到deepClone方法中,然后将得到的新数组添加到result中(该新数组与arr1中的[77,88]没有关系),这就实现了深克隆:

http://img1.sycdn.imooc.com//climg/5f656b9d094ed6d511880201.jpg

同学再理解一下。

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师