es6引⼊链判断运算符
es6引⼊链判断运算符
编程事务中,如果要读取对象内部的某个属性,往往需要先判断该对象是否存在,然后再读取对象属性。
⽐如,要读取ame,正确写法如下所⽰:
//错误写法
constfirstName=ame;
//正确写法
constfirstName=(message&&
&&
&&
ame)||'default';
或者使⽤三元运算符?:,判断⼀个对象是否存在。
constaddressInput=elector('input[name=address]');
constaddressValue=addressInput?:undefined;
对象属性层层判断是否存在⾮常⿇烦,因此ES6引⼊了“链判断运算符”(optionalchainingoperator)?.,简化上⾯的写法。
constfirstName=message?.body?.ur?.firstName||'default';
constaddressValue=elector('input[name=address]')?.value;
在链式调⽤的时候判断,左侧的对象是否为null或undefined。如果是的,就不再往下运算,⽽是返回undefined。
短路机制
.链判断运算符相当于⼀种短路机制,只要不满⾜条件,就不再往下执⾏。
链判断运算符的应⽤
获取对象属性:先判断对象是否存在,再获取对象属性。
varobj={
name:'Tom'
showName:function
}
varname=obj?.name
varname1=obj?.['name']
(name)//Tom
(name1)//Tom
对象⽅法的调⽤:先判断对象是否存在,若对象存在再判断对象⽅法是否存在,最后调⽤对象⽅法。
varobj={
name:'Tom',
showName:function(){
()
}
}
obj?.showName?.()
函数调⽤:先判断函数⽅法是否存在,再调⽤函数。
functionaddNum(num1,num2){
returnnum1+num2
}
letresult=addNum?.(1,2)
(result)//3
本文发布于:2022-11-13 04:14:07,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/8734.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |