|
作用:读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。运算符的功能类似于 . 链式运算符,不同之处在于,在引用为空 (nill 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined。与函数调用一起使用时,如果给定的函数不存在,则返回 undefined。
使用:
var obj = { a: 1, b: 0 };console.log(obj.a, obj.b)console.log(obj?.a) // 1console.log(obj?.) // 0console.log(obj?.c) // undefinedconsole.log(obj?.b || '') // ""console.log(obj?.b ?? '') // 0具体场景:
1、使用ref调用vue组件函数,但组件v-if时,使用?.运算符可以进行代码简化;
2、多层对象(Object)嵌套时使用链式操作符(.)进行获取值时使用 ?. 可以确保获取的数据不会报错(Cannot read properties of undefined)
遇到的问题:
在一般情况下要设置默认值做法是 undefined || "xxx";
在可选链运算符时 应该使用 ?? 而不是 || 原因是
console.log(obj?.b || '') // ""console.log(obj?.b ?? '') // 0在 || 的判断中 0会被转换为 false,输出后面的空字符串,所有需要使用 ??(空值合并运算符 null,undefined)
来源:https://www.cnblogs.com/111lll/p/17593366.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|