Javascript即将迎来Optional Chaining
时间:2022-05-05
本文章向大家介绍Javascript即将迎来Optional Chaining,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
它是什么?
Optional Chaining 使我们能检查一个对象上面是否存在某属性。其它一些语言有类似的特性。C# 例如,有 Null Conditional 操作符很像提案中的 Optional Chaining。
我们为何需要它?
你是否曾经在使用对象或数组的属性之前,检查它是否存在吗?如果你不记得,下面展示一下:
if(specimen && specimen.arms && specimen.arms.length > 2)
console.log("This is probably an alien");
如果我们不做检查,可能会遇到下面的错误:
因为,specimen 存在,但它没有 arms 属性。因此,当我们在它身上获取length属性时就会报错。
提案是怎样的?
取代上面的写法,我们可以使用 optional chaining 写出如下代码:
if(specimen?.arms?.length > 2)
console.log("This is probably an alien");
不管怎样,我们应该记住 Optional Chaining 操作符是 ?. 而不是 ? ,这就意味着当我们从数组中获取数据时,应该如下:
var firstArm = specimen?.arms?.[0]; //CORRECT
var secondArm = specimen?.arms?[1]; //WRONG
相似的,当我们检查一个方法时,如下:
var kickPromise = specimen?.kick?.(); //CORRECT
var punchPromise = specimen?.punch?(); //WRONG
在上例中,在调用方法之前,我们先检查 kick 是否存在。
它是如何工作的?
这个操作符检查 ?. 左边的值是否为 null 或 undefined。如果是,这个表达式就终止然后返回 undefined。否则,这个表达式继续执行就像没有错误一样。
- 如何使用Java代码访问CDH的Solr服务
- Safari UXSS漏洞分析(CVE-2016-4758)
- Sqoop抽取Hive Parquet表数据到MySQL异常分析
- Hue中使用Oozie创建Ssh工作流时sudo命令执行失败问题分析
- [译]Safari URL重定向漏洞(CVE-2016-4585)利用分析
- Hive中的Timestamp类型日期与Impala中显示不一致分析(补充)
- 百篇(5):FeignClient 在不同场景中的应用
- 如何使用Hue上创建一个完整Oozie工作流
- MySQL远程代码执行/权限提升漏洞的分析与实践(CVE-2016-6662)
- 如何在CDH集群上部署Python3运行环境及运行Python作业
- Hacking Aria2 RPC Daemon
- 如何修改CDH集群的DataNoe节点HOSTNAME
- Sparkjava Framework 文件遍历漏洞(CVE-2016-9177)分析与探究
- 绕过混合内容警告 - 在安全的页面加载不安全的内容
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 快速学习-skywalking入门
- ts7053的另一种解法
- 三分钟读懂Softmax函数
- Docker 容器分离部署LNMP架构
- Exams/ece241 2013 q4答案解析
- ansible生产环境使用场景(三):find查找指定内容
- vue 中 key 值有什么作用?
- webgl实现发光线框(glow wireframe)效果 要实现发光的效果
- [mongodb] mongo常用字段类型
- 无意间发现一个好用的视频转换gif图片的开源框架
- 解读闭包,这次从ECMAScript词法环境,执行上下文说起
- 额度模型(一)
- GitHub Actions使用入门
- freeswitch笔记(9)-esl outbound中如何放音采集按键?
- react childern添加事件