js空值处理

背景

在开发过程中,我们经常会遇到不能获取undefined或者null的某个属性的报错。还有各种各样的空值处理。

如果使用三目运算符、if else来处理的话,会造成代码冗余,看着也很难受。

可选链(?.)

主要就是解决下图的问题。
在这里插入图片描述
其实这种情况就相当于直接在undefined上面访问name属性,undefined和null是两个比较特殊的数据类型,是不能用点操作符去访问属性的。那么在一个变量可能为null、或者undefined的时候,恰巧我又需要访问这个变量的一个属性,那我们应该这样做

let a;
let b;
if(!!a){
	b = a.name;
}else{
	b = undefined;
}

但是这么简单的逻辑代码写的有些麻烦,简单的方式就是使用可选链的形式。
如果使用 ?. 就不会报错

let a;
a?.name // 不会报错
a?.name?.age?.some.... // 也不会报错

在这里插入图片描述
总结:不论有多少属性,只要最后可以访问到属性,访问到的最终结果直接赋值给b。否则,就把undefined赋值给b。

空值合并运算符(??)

现在来看另一个栗子:

let b;
let a = 0;
let c = { name:'阿仁' }

if(!!a || a === 0 ){
	b = a;
}else{
	b = c;
}

在判断一个值是否存在的时候,当值为0的时候也需要当它存在,这时代码就写成了上面的样子,这样有点麻烦。

这时就需要用到 ??

let b;
let a = 0;
let c = { name:'阿仁' }

b = a ?? c;

这时,只要a不等于undefined和null,b就等于a,否则b等于c

空值赋值运算符(??=)

let a = 0;
let b;
let c = 'aren'

a ??= c // a = 0
b ??= c // b = 'aren'

只有当??=左侧的值为null、undefined的时候,才会将右侧变量的值赋值给左侧变量。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值