基于es2020新特性可选链在实际场景的案例(优化代码应用程序方案解决)
1. ?.是可选链,只有左边为空或者underfined的时候会执行右边的属性进行查找,如果不存在就返回了undefined来不报错,表明对象是空的
null.name //无法读取属性 var userInfo = null //undefined userInfo.name // 无法读取 null属性 name 会直接报错 !!userInfo ? userInfo.name : ''; //'' //这一句是三目运算取反 userInfo?.name //undefined //因为?.可选链是针对于属性是否存在返回 undefined来防止报错, //也就是先运行左边在查找对象身上的属性来判断返回undefined null??'123' //'123' // ??在左边为null或者是undefined时就直接运行右边的计算
l使用思路:是属于简化的三元判断,首先隐式的判断?前的变量是否存在,( 既不是 null 也不是 undefined的时候的值)。如果是在null或者undefind 表达式将会短路计算直接返回给undefined。来打印输出,而不是报错终止掉程序应用。
短路计算原则:语法
obj?.prop obj?.[expr] arr?.[index] func?.(args)
1.当在表达式中使用可选链时,如果左操作数是 null 或 undefined,表达式将不会被计算
2.可选链与函数调用:当尝试调用一个可能不存在的方法时也可以使用可选链。函数调用时如果被调用的方法不存在,使用可选链可以使表达式自动返回undefined而不是抛出一个异常。解决报错的问题而终止程序。
2.判断是数据是否为空,就执行
//flase !! null ?userInfo.name : userInfo //null
官网定义是:可选链操作符(?.)允许读取位于连接对象链深处的属性值,而不必明确验证链中的每个引用是否有效。这个操作符类似于对象.属性链式操作符,不同之处在于,引用空(nulllish)(null或者undefined)的情况下不会引起错误,该表达式短路返回值是undefined。与函数调用一起使用时,如给定函数不存在也是返回undefined。

浙公网安备 33010602011771号