微软 TypeScript 程序经理 Daniel Rosenwasser 宣布 Optional Chaning(?. )进入 TC39 Stage 4 状态,这意味着该特性现在已经是 ES2020 标准的一部分。

Optional Chaining 最初是 TypeScript 的 issue 跟踪器上第 16 个 issue,于 5 年前提交,要知道目前总共有多达 23000 个 issue。当时 TC39 还没有正式提案,这些年来开发者一直要求实现该特性,但是为了不与 ECMAScript 建议冲突,迟迟没有实现,相反 TS 开发团队一直在帮助推动该提案实现标准化,并最终推及所有 JavaScript 与 TypeScript 开发者。

TypeScript 就在上个月发布的 3.7 版本中,正式带来了 Optional Chaining 特性,现在则更进一步,该特性进入了 ECMAScript 标准。

Optional Chaining 特性主要用于保护出现在属性路径中 null 和 undefined 值,像 C# 等语言中已经有用于访问属性链的语法糖,可以在对象层次结构中的任何地方处理遇到的 null 和 undefined 情况,使它可以正常执行,而不会抛出错误。

具体来讲,在向树状结构深处进行属性值访问时,通常需要检查中间节点是否存在:

var street = user.address && user.address.street;

许多 API 返回一个对象或 null/undefined,并且可能只想在结果不为 null 时从结果中提取属性:

var fooInput = myForm.querySelector('input[name=foo]')
var fooValue = fooInput ? fooInput.value : undefined

Optional Chaining 运算符允许开发人员直接用简单的方式处理这种情况,而不用进行重复性操作,或者使用临时变量分配中间结果:

var street = user.address?.street
var fooValue = myForm.querySelector('input[name=foo]')?.value

因为是保护访问属性链时的 null 与 undefined,所以 Optional Chaining 运算符也叫做“安全导航运算符”,TC39 标准中给出的该运算符是“?.”,它的语法可以适用于三种场景:

obj?.prop       // 自判断静态属性访问
obj?.[expr]     // 自判断动态访问
func?.(...args) // 自判断函数或方法调用

对于开发者来说,再也不用看到满屏`x && x.yyy`了。

Optional Chaining 进入 ES2020,不用满屏`x x.yyy`了相关推荐

  1. 盈利靠涨价、广告满屏飞,共享充电宝入局容易做大难

    出品 | TechWeb 作者 | 懿慈 前几年,共享单车的火爆引发了一场共享经济热潮,让很多创业者和投资人趋之若鹜.只是,喧嚣过后,留下一地鸡毛,主力纷纷撤退,要么欠钱找不到人,要么卖身给大厂接盘. ...

  2. TypeScript 3.7 发布,带来 Optional Chaining 等特性

    TypeScript 3.7 发布了,此版本带来了许多新特性. Optional Chaining 首先一大亮点是 Optional Chaining,这是社区呼唤特别强烈的一个 ECMAScript ...

  3. 别在再满屏的 if、else 了,试试策略模式,真香!!

    你还在写满屏的 if/ else/ switch 之类的判断逻辑吗? 栈长在开发人员的代码中看过太多这样的低级代码了,真的太 low,极不好维护,本文栈长就教你如何用策略模式干掉 if/ else/ ...

  4. 小程序实现满屏上下滑动效果

    小程序实现满屏上下滑动效果 写的时候发现网上没有好用的,要么过于复杂,要么不太实用,我就自己整了个简单的 直接上代码部分 //wxml部分 <swiper indicator-dots=&quo ...

  5. 满屏的try-catch,你不瘆得慌?

    目录 前言 Spring Boot 版本 全局统一异常处理的前世今生 Spring Boot的异常如何分类? 如何统一异常处理? 异常匹配的顺序是什么? 总结 前言 软件开发过程中难免遇到各种的BUG ...

  6. qq满屏飞吻代码_教你用微信隐藏代码表白!各种微信技巧

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都会有分享,都是免费订阅,请您放心关注.注:本文转载自网络,不代表 ...

  7. 一款jQuery满屏自适应焦点图切换特效

    一款jQuery满屏自适应焦点图切换特效 ,自适应当前浏览器的宽度,可以作为网站整个大背景的却换效果,很不错的一款不jquery特效. 兼容性没的说直接秒杀了IE6.适用浏览器:IE6.IE7.IE8 ...

  8. 打开了悬浮窗权限但是没有_给你的手机添加“樱花雨”特效,打开手机樱花就满屏飘落,漂亮!...

    记得用塞班系统的手机时有很多手机特效补丁,随着科技的改朝换代现在的安卓手机貌似没有那些特效补丁了,回想曾经的诺基亚时代很是回味无穷,还好今天小编就带大家重回那些金典的画面,屏幕下雨,满屏樱花飞舞,等等 ...

  9. PyCharm去掉满屏的波浪线

    首先打开: File>Settings>Editor>Colors&Fonts>General 选中1去掉2的勾选,就可以解决满屏的波浪线,其它雷同. 转载于:http ...

最新文章

  1. 有了易生信,导师再也不用担心我的单细胞转录组整合分析啦
  2. Linux虚拟化介绍
  3. PostgreSQL schemaless 的实现(类mongodb collection)
  4. JDBC第一篇之获得数据库连接
  5. C++程序设计基础(8)main函数
  6. 五.Java IO、NIO、文件、通讯
  7. MongoDB数据库(了解MongoDB及基础命令,备份数据库)
  8. oc---类方法load和initialize的区别
  9. centos7 docker
  10. 塑料封装可靠性问题浅析
  11. python生成个性二维码学习笔记
  12. obs之libx264编码
  13. 在同一个数据集中同时更新多表..............
  14. java ACM竞赛IO优化Petr模板
  15. linux----------2--3----(无名)管道通信原理及管道编程实战
  16. 数据分析总结一:数据分析思维
  17. 梦江湖获取服务器信息,《一梦江湖》6月5日更新公告
  18. CentOS7安装Nginx及配置
  19. erdas图像增强步骤_ERDAS图像增强处理.ppt
  20. 如何实现python自动打开B站视频并点赞?循环版

热门文章

  1. 对多用户分时系统最重要_互联网搜索引擎:让你的产品在最显眼的位置摆摊
  2. android 数据库详解,Android-SQLite数据库操作详解
  3. 为什么要用shiro框架_社群裂变为什么要用微信群助手?怎么去策划社群的线上裂变?...
  4. 壁纸图片|2020年12月游戏图片大全
  5. 圣诞节海报设计还没开始?感受下合适的节日感PSD模板
  6. UI设计师必备的网站推荐
  7. 浪漫七夕节丨中国情人节营销海报模板
  8. 平面设计师如何利用图片素材提升工作效率
  9. 民航飞行学院计算机学院院长,中国民航飞行学院计算机学院领导及老师到访四川华迪开展教研活动...
  10. 跟驰理论 matlab,第5章跟驰理论48127855.ppt