为啥加问号?可选链(Optional Chaining)的操作符

简介: 为啥加问号?可选链(Optional Chaining)的操作符

在JavaScript中,使用问号 ? 作为可选链(Optional Chaining)的操作符,其目的是为了安全地访问对象的深层属性,而不会因为对象链中的某个环节不存在(nullundefined)而导致错误。

例如,考虑以下代码:

const res = {

        data: { list: [1, 2, 3] }

};

const data = res.data?.list;

在这个例子中,res.data?.list 使用了可选链操作符 ?.。如果 res.data 是 undefined 或 null,那么 res.data.list 将不会尝试访问,并且整个表达式 res.data?.list 的值将是 undefined,而不是抛出一个错误。


可选链操作符 ?. 后面可以跟属性访问(如上例中的 list),也可以跟函数调用(例如 res.data?.getList()),如果对象链中的某个环节不存在,那么函数调用将不会执行,并且表达式的结果将是 undefined。


总结来说,加问号 ? 是为了实现可选链,它允许开发者在访问对象属性时不必显式检查每个中间对象是否存在,从而使得代码更加简洁和安全。


相关文章
|
8月前
|
语音技术 Python
语音识别,range语句,range语句=生成数字序列,for循环临时变量作用域,for循环临时变量作用域,for循环的变量作用域只能在for内部用,for循环的嵌套使用,for循环打印九九乘法表
语音识别,range语句,range语句=生成数字序列,for循环临时变量作用域,for循环临时变量作用域,for循环的变量作用域只能在for内部用,for循环的嵌套使用,for循环打印九九乘法表
|
9月前
|
Scala
scala-模式匹配(字符串、数组、元组、集合、类、偏函数)
scala-模式匹配(字符串、数组、元组、集合、类、偏函数)
42 0
|
10月前
|
安全 算法 编译器
【C++ 基础 ()和{}括号】深入探索 C++ 的变量初始化:括号和大括号的奥秘
【C++ 基础 ()和{}括号】深入探索 C++ 的变量初始化:括号和大括号的奥秘
689 0
|
存储 Oracle Java
Java数据类型,变量与运算符
Java数据类型,变量与运算符
67 0
RxSwift操作符操作符map、flatMap、flatMapLatest、filter的使用与区别
RxSwift操作符操作符map、flatMap、flatMapLatest、filter的使用与区别
509 1
|
JavaScript 前端开发
空值合并运算符和可选链
空值合并运算符和可选链
|
存储 安全 编译器
【Effective C++详细总结】第二章 构造/析构/赋值运算
【Effective C++详细总结】第二章 构造/析构/赋值运算
157 0
复习C部分:1.什么是常量 2.初时字符串 3.初识转义字符 4.注释 5.初识选择语句 6.初识循环语句 7.初识函数和数组 8.初识操作符 9.初始操作符2
复习C部分:1.什么是常量 2.初时字符串 3.初识转义字符 4.注释 5.初识选择语句 6.初识循环语句 7.初识函数和数组 8.初识操作符 9.初始操作符2
128 0
复习C部分:1.什么是常量 2.初时字符串 3.初识转义字符 4.注释 5.初识选择语句 6.初识循环语句 7.初识函数和数组 8.初识操作符 9.初始操作符2
|
存储 数据库 C#
C#语法中一个问号(?)和两个问号(??)的运算符是什么意思?
(1)、C#语法中一个个问号(?)的运算符是指:可以为 null 的类型。  MSDN上面的解释: 在处理数据库和其他包含不可赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型以及日期类型的功能特别有用。
2735 0
|
移动开发 缓存 HTML5
是时候学习/推广一波可选链(Optional chaining)和空值合并(Nullish coalescing )了
最近工作中发现团队有些同学不太了解 Optional chaining 和 Nullish coalescing 两个新的操作符,正好推广一波。
是时候学习/推广一波可选链(Optional chaining)和空值合并(Nullish coalescing )了