第一个! 非空断言操作符
在上下文中当类型检查器无法断定类型时,一个新的后缀表达式操作符!可以用于断言操作对象是非null和非 undefined类型。不推荐实用,尽量用可选链 ?.
第二个 ?. 可选链 Options Chaining ,呼声最高的功能之一,有了可选链我们在遇到null或者undefined的时候 就可以立即停止某些表达式的运行,可选链的核心是新的?.的运算符,他支持一下语法:
obj?.prop
obj?.[expr]
arr?.[index]
func?.(args)
举个栗子
const val = a?.b;
如果 用es5的写法
const val = a===null || a=== void 0? void 0: a.b;
if(a && a.b){}
if(a?.b){}