掌握特殊操作符:??与?.
本帖最后由 pilot34 于 2023-2-20 09:30 编辑一、空值合并操作符:??
1、扩展
空值合并操作符`??`有个与其功能类似的操作符,即`||`(逻辑或运算符),也是一般空值合并时比较常用的。
2、对比
[*]??:当有两个值需要空值合并时,只有当左侧为null和undefined,才会返回右边的数。
[*]||:当有两个值需要空值合并时,当左边的值为假(0或false或""或null或undefined)时返回右边的值,有时候在默认赋值时会有意料之外的错误。
3、实例
let a1 = "" || false || 1;
let a2 = null || undefined || 2;
let a3 = "" ?? false ?? 1;
let a4 = null ?? undefined ?? 2;
console.log("逻辑操作符,空值合并", a1, a2, a3, a4); //逻辑操作符,空值合并 1 2 "" 2
二、可选链操作符:?.
1、扩展
可选链操作符?.,其功能与.链式操作符类似。
2、对比
[*]?.:在引用为空 (nullish ) (null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined。
[*].:在引用为空 (nullish ) (null 或者 undefined) 的情况下会引起错误。
3、实例
let animal = { cat: { name: "carry" } };
console.log("可选链操作符", animal.dog?.name, animal.cat?.sex); //可选链操作符 undefined undefined
console.log("可选链操作符", animal.dog.name, animal.cat.sex); //程序中断,报错
学到了,感谢楼主 学到了,感谢分享。
页:
[1]