obj==null ?

obj==null ?

深克隆第一步判断值的类型,那么为什么要排除obj==null?不是{}!={},[]!=[]吗?

正在回答

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

2回答

同学你好, 对于你的问题解答如下:

1、因为使用typeof检测数组和对象,返回结果都是object,如下图所示:

http://img1.sycdn.imooc.com//climg/600e401c097d140002080136.jpg

所以代码中typeof  obj !== 'object'  这句代码就排除了传入的值不是数组或者对象的情况。

但是由于null使用typeof检测返回结果也是object,如下图所示:

http://img1.sycdn.imooc.com//climg/600e40ad09981e8502350067.jpg

所以需要单独判断obj是否等于null,排除传入的值是null的这种情况

2、经过第一条的分析后可知, if语句的作用就是:如果传入的值是null, 或者不是对象和数组,就直接返回,如下图所示:

http://img1.sycdn.imooc.com//climg/600e4143096310c708280174.jpg

祝学习愉快~

  • 慕尘埃191116 提问者 #1

    我的意思是想问,如果是空数组或空对象,为啥就不需要深克隆了呢。

    2021-01-25 12:11:56
好帮手慕慕子 2021-01-25 14:27:26

同学你好, 对于你的问题解答如下:

1、空数组或空对象,也需要深克隆。

2、null并不是表示空数组或空对象,如下图所示:

http://img1.sycdn.imooc.com//climg/600e638309fca3a402050129.jpg

null是js中的一种基本数据类型,在前面的课程中有详细的讲解,同学可以回顾下课程加深记忆与理解 https://class.imooc.com/lesson/1621#mid=36946 

3、 if语句的作用就是:如果传入的值是null, 或者不是对象和数组,就直接返回,不进行深克隆,只有传入的是数组或对象才进行深克隆。

祝学习愉快~

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

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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