js 逻辑空分配双问号语法 、双竖杠语法 与 可选链语法
可选链的语法允许开发者访问嵌套得更深的对象属性,而不用担心属性是否真的存在。也就是说,如果可选链在挖掘过程遇到了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 双问号
叶落无痕52: 感谢分享!
YUnicorn l: 问题就是使用Vue绑定数据显示的时候,报错: Vue TypeError:Cannot read property ‘xxx’ of null 但是页面又显示正常,数据也正常。 原因: 我们在data中绑定了数据,比如数据名为 article 但是初始的数据是null,我们的想法是等会mounted中初始化,传入响应数据对象。 但是Vue在渲染页面的时候已经绑定了数据,article.title,在请求前找到article是null,所以才会出现上面的报错 解决 在使用到article对象的模块加上了 v-if=“article!==null” 总结 对于Vue data中绑定的数据 如果是对象的话,在使用模块前加上v-if判断是否==null 如果是数组的话,初始化的时候给上[]