基于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。

posted @ 2022-03-15 00:06  cc-front  阅读(101)  评论(0)    收藏  举报