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 入门 | 运算符的扩展