链判断运算符
听到这个名字感觉好高端,感觉学不懂别怕这是一个很简单的运算符
作用:当访问一个对象属性是用来判断
对
象
是
否
存
在
\color{#c7254e}{对象是否存在}
对象是否存在
为什么要判断?????
在项目中如果你不去判断对象是否存在在去访问属性,项目就崩了
如果要访问一个比较长的对象属性例如:Obj.userInfo.userName
在es5要这样判断
const userName = Obj &&
Obj.userInfo &&
Obj.userInfo.userName ;//这样判断是不是很繁琐
所以es6引入链式判断运算符
?
.
\color{#c7254e}{?.}
?.
es6写法
const userName = Obj?.userInfo?.userName; //对比上面少了一大串
Null判断符
在es5的是否我们经常使用 ∣ ∣ \color{#c7254e}{ ||} ∣∣ 来设置默认值
let a = a.name || 'default'
es6提供了null判断符 ? ? \color{#c7254e}{??} ?? 两个问号来判断,只有当左边的值为null、undefined右边的值才会生效
let a = undefined ?? 'default'
let a2 = null ?? 'default';
console.log(a); //default
console.log(a2); //default