【js】es6 可选链 ? . 和 空值合并 ? ? 运算符使对象多层判断更简洁

es6可选链?.

1.在调用函数里使用

如果我们多层的调用,直接调用当中间某层不存在时代码就会报错,如直接不判断调用ref.componentRef.instance.ngOnDestroy(),当中间某一层如instance不存在时就会报错

发现判断某个对象的函数存在才调用,通过使用es6的可选链非常方便,分享如下:

ref?.componentRef?.instance?.ngOnDestroy?.();

相当于

if (ref && ref.componentRef && ref.componentRef.instance && ref.componentRef.instance.ngOnDestroy) {
  ref.componentRef.instance.ngOnDestroy();
}

2.在做判断

if(obj?.person?.age){

}

相当于

if(obj && obj.person && obj.person.age){

}

空值合并??

空值合并也很方便,在我们默认赋值的时候很简洁的使用,当不为undefined或null,就使用??右侧的值

var age = b ?? 9;

当b为undefined或null时,age就为9,而b如果为0或者其他转换为false的值a的值还是为9的

参考:
MDN | 可选链操作符
MDN | 空值合并运算符
阮一峰 | ECMAScript 6 入门 | 运算符的扩展

你可能感兴趣的:(javascript,es6,可选链,?.,前端,空值合并)