可选链的语法允许开发者访问嵌套得更深的对象属性,而不用担心属性是否真的存在。也就是说,如果可选链在挖掘过程遇到了null或undefined的值,就会通过短路(short-circuit)计算,返回undefined,而不会报错。
逻辑空分配运算符仅在空值或未定义(null or undefined)时才将值分配给 a
双问号:当前面的值为 null 、undefined 时,就返回后面的值,否则取前面的值
user.userinfo.age ?? 0
双竖杠:只要前面的值转为布尔值为false时,就取后面的值(如:undefined、null、false、空字符串、数值0)
思考:双问号更适合在不知道变量 是否定义 或者 是否赋值 时的场景使用
?.可选链: 如果要表示
let test = {
value: {
a: '1222'
}
}
如果要实现 test 存在时,返回 test.value,否则返回 undefined
则需要这样写:
let myvalue = test ? test. value : undefined
如果用可选链语法,则可以简写为:
let myvalue = test ?. value
如果要返回 test.value.a ,则可以简写为:
let a = test ?.value?.a || 10 //如果test.value.a不存在的话 (为null或undefined) ,则返回10固定值
参考:
vue项目支持js新语法可选链“?.“以及逻辑空分配(双问号)“??“_鸽子.Luna的博客-CSDN博客_vue 双问号