|| ?? 和 ?. 的意思
2024-03-24 00:16:16
空值合并操作符 ??
??是只要前面是null underfined 就取后面的值 不然取前面的
逻辑或操作符 ||
|| 是前面是true(非 underfined,null,false,"",0) 就取前面的,不然取后面的
可选链操作符 ?.
可选链操作符?.允许读取位于连接对象链深处的属性的值
而不必明确验证链中每个引用是否有效。?.操作符的功能类似于
.链式操作符。不同之处在于 在引用为空(null 或者underfined)的情况下不会引起错误,该表达式短路返回值
语法:obj?.prop obj?.[expr] arr?.[index] func?.(args)
函数调用:
let result = someInterface.customMethod?.();
如果希望允许 someInterface 也为 null 或者 undefined ,那么你需要像这样写 someInterface?.customMethod?.()
可选链与表达式:
let nestedProp = obj?.['prop' + 'Name'];
可选链访问数组:
let arrayItem = arr?.[42];
例子:let myMap = new Map();myMap.set("foo", {name: "baz", desc: "inga"});let nameBar = myMap.get("bar")?.name;在一个不含 bar 成员的 Map 中查找 bar 成员的 name 属性,因此结果是 undefined。
短路计算:
let potentiallyNullObj = null;
let x = 0;
let prop = potentiallyNullObj?.[x++];console.log(x); // x 将不会被递增,依旧输出 0当在表达式中使用可选链时,如果左操作数是 null 或 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); // “暗之城”
最新文章
- 下列关于python字典变量的定义中错误的是_python练习题-day14
- beanUtils操作bean的属性
- 关于WM_NCHITTEST消息(移动无标题对话框多个)
- Oracle在线重定义
- 强碱性食品 高嘌呤食物
- linux——DHCP的配置问题
- Java Socket重要参数讲解
- 6大设计原则之接口隔离原则
- 怎么在ASP.NET 2.0中使用Membership
- [前缀和][dp] Jzoj P5873 小p的属性
- php为什么发送不到sql,PHP-为什么我的Ajax无法执行我的SQL查询?
- 《PIC微控制器项目设计:C语言》一导读
- Visio画图删去四周白边
- 零基础SSM入门教程(50)–Spring总结与展望SpringBoot、SpringCloud
- 【Java】:基础入门知识
- 前沿综述:细数2018年最好的词嵌入和句嵌入技术
- scau 10306 Prison break
- 手把手教你TSYS建站
- r软件中合并列_将摘要合并到软件中
- 禅卡塔罗;追随它的指引,你会得到更多
热门文章
- 扫描版PDF自动添加书签 | 电子书目录自动获取
- 木马程序,原来还有发展,现在居然还有好多代?
- 怎么更改计算机开机声音,电脑开机声音,详细教您电脑开机声音怎么更改
- SKY65162-70LF射频功率放大器
- R语言实战应用精讲50篇(三十五)-R语言实现xgboost回归(附R语言代码)
- Android JNI开发
- 2150: 部落战争
- linux目录对应windows,linux目录和Windows目录对比
- EXCEL去重统计(条件去重复计数)
- 南开大学计算机学院宿舍,数说CS | 南开大学计算机学院推免生源大起底!