可选链?.(现代JavaScript教程笔记三

可选链?.

如果可选链?.前面是undefined或者null 则会停止运算并返回该部分

比如 value?.prop:
意思是如果value存在,则结果与value.prop结果相同
例子:安全访问user.address.street可以这样写

let use={} //use 并没有address属性
alert(use?.address?.street)//undefined  不报错
另外,即使对象不存在,也可以用?.
比如  let use=null
alert(use?.address)//undefined
alert(use?.address.street)//undefiend

优化一点的写法(不能滥用
比如 use对象一定存在,但是其属性address是可选的 ,需要写成这样
use.address?.street
而不是use?.address?.street
注意
?.前面的变量必须是已经声明的(比如let/const/var use 或者作为一个函数参数。可选链仅适用于已经声明的变量

其他变体 ?.() ?.[]

  • ?.() 可以调用一个可能不存在得函数
  • ?.[] 可以允许从一个可能不存在得对象上安全得读取属性
let user={
   	top:"五条悟",
   	power(){
   		alert("无下限术式,反转术式")
   	}
}
let userGuest={};
user.power?.()//无下限术式,反转术式
userGuest.power?.()//这个啥也没有
let user2=null;
let key="top";
user?.[key]//五条悟
user2?.[key] //undefiend

?.也可与delete 一起用
delete user?.name//如果user存在 那么删除user.name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值