双问号操作符和可选链操作符
Posted 秋水不寒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双问号操作符和可选链操作符相关的知识,希望对你有一定的参考价值。
双问号操作符(??
),也被称作空值合并运算符,当左侧的操作数为 null
或者 undefined
时,返回其右侧操作数,否则返回左侧操作数
const foo = null ?? 'default string';
console.log(foo); // "default string"
可能有人会问 ??
和 ||
有什么区别呢?
??
的左侧只判断两种情况:null
和 undefined
,而 ||
的左侧只要是假值(包括''
和 0
)都会返回右侧的值
const number = 0;
console.log(number || 100); // 100
console.log(number ?? 100); // 0
可选链操作符( ?.
)允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?.
操作符的功能类似于 .
链式操作符,不同之处在于,在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined
。与函数调用一起使用时,如果给定的函数不存在,则返回 undefined
。
这等价于以下表达式,但实际上没有创建临时变量:
1 2 |
|
let object = {};
object?.property = 1; // Uncaught SyntaxError: Invalid left-hand side in assignment;
短路计算
当在表达式中使用可选链时,如果左操作数是 null
或 undefined
,表达式将不会被计算,例如:
1 2 3 4 5 |
|
以上是关于双问号操作符和可选链操作符的主要内容,如果未能解决你的问题,请参考以下文章