JavaScript 可选链操作符 ?.
JavaScript 大约 917 字介绍
可选链操作符(?.
),不必明确验证链中的每个引用是否有效。在引用为空(null
或者undefined
)的情况下不会引起错误,该表达式短路返回值是undefined
。与函数调用一起使用时,如果给定的函数不存在,则返回undefined
。
语法
obj?.prop
obj?.[expr]
arr?.[index]
func?.(args)
示例一
const adventurer = {
name: 'Alice',
dog: {
name: 'Dinah'
}
};
const dogName = adventurer.dog?.name;
console.log(dogName); // output: Dinah
console.log(adventurer.someNonExistentMethod?.()); // output: undefined
示例二
连用多个可选链?.
let customer = {
name: "Carl",
details: {
age: 82,
location: "Paradise Falls" // details 的 address 属性未有定义
}
};
let customerCity = customer.details?.address?.city;
// … 可选链也可以和函数调用一起使用
let duration = vacations.trip?.getTime?.();
示例三
使用空值合并操作符??
给可选链设置默认值
let customer = {
name: "Carl",
details: { age: 82 }
};
let customerCity = customer?.city ?? "暗之城";
console.log(customerCity); // 暗之城
官方文档
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining
阅读 2386 · 发布于 2021-06-07
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Spring Boot 静态资源设置缓存控制 Max-Age 返回头阅读 398
-
Redis 批量删除 key阅读 4063
-
Vue <component> 实现组件动态加载阅读 1180
-
Docker Dockerfile ADD 与 COPY 指令的区别阅读 83
-
MySQL 最后一次查询花费时间阅读 2180
-
Redis删除数据后内存不释放解决方法阅读 3654
-
Ali OSS 云存储使用阅读 325
-
Jedis OOM command not allowed when used memory > 'maxmemory'阅读 3278
-
PHP curl 报错:SSL connect error阅读 2919
-
Java 语法糖 - 泛型擦除阅读 1169