含义:
js 中 ?. 操作符的意思就是判断其左边的内容是否是存在,不存在则返回undefined,但是不会报错
?? 就是当操作符的左边是undefiend或null时,才使用右边的数据,其与null的区别就是,0 false 空字符串,对于??来说都是正常的可用的值(这里可能表达不是很清楚,下面使用代码实例说明)
?.操作符
一般是我们操作深层对象时使用,下面旧代码实例说明一下,使用?.操作符与普通if判断的区别
大家可以通过,分分别注释,来查看效果,会发现效果是一样的
function Test1 (obj) {
if (obj && obj.row && obj.row.data) {
// if (obj?.row?.data) {
console.log(obj.row.data)
} else {
console.log('数据格式不正确')
}
// 检测其返回值,加入中间某个属性不存在,就会返回undefined,但是不会报错
console.log(obj?.row?.data)
}
其实
obj?.row?.data
与
obj && obj.row && obj.row.data
判断效果是一样的,只不过obj?.row?.data更加优雅
如果obj?.row?.data,obj、row、data任意一个不存在,最终结果都是undefined
??操作符
其实这个运算符主要就是针对undefined与null的,例如
let res = v1 ?? v2
只有当v1是null或undefiend时,才会使用操作符右边的表达式或值,需要注意的时 v1是false 0 空字符串时,使用的也是v1,不会使用v2,这也是其与 逻辑或(||)最大的区别
代码实例及其结果
当v1是null或undefiend时
当v1是0 false 空字符串时