前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Javascript即将迎来Optional Chaining

Javascript即将迎来Optional Chaining

作者头像
前端黑板报
发布2018-03-21 16:52:18
6210
发布2018-03-21 16:52:18
举报
文章被收录于专栏:前端黑板报
Optional Chaining 现在处于 Stage 1。

它是什么?

Optional Chaining 使我们能检查一个对象上面是否存在某属性。其它一些语言有类似的特性。C# 例如,有 Null Conditional 操作符很像提案中的 Optional Chaining。

我们为何需要它?

你是否曾经在使用对象或数组的属性之前,检查它是否存在吗?如果你不记得,下面展示一下:

代码语言:javascript
复制
if(specimen && specimen.arms && specimen.arms.length > 2)
    console.log("This is probably an alien");

如果我们不做检查,可能会遇到下面的错误:

因为,specimen 存在,但它没有 arms 属性。因此,当我们在它身上获取length属性时就会报错。

提案是怎样的?

取代上面的写法,我们可以使用 optional chaining 写出如下代码:

代码语言:javascript
复制
if(specimen?.arms?.length > 2)
    console.log("This is probably an alien");

不管怎样,我们应该记住 Optional Chaining 操作符是 ?. 而不是 ? ,这就意味着当我们从数组中获取数据时,应该如下:

代码语言:javascript
复制
var firstArm = specimen?.arms?.[0]; //CORRECT
var secondArm = specimen?.arms?[1]; //WRONG

相似的,当我们检查一个方法时,如下:

代码语言:javascript
复制
var kickPromise = specimen?.kick?.();  //CORRECT
var punchPromise = specimen?.punch?(); //WRONG

在上例中,在调用方法之前,我们先检查 kick 是否存在。

它是如何工作的?

这个操作符检查 ?. 左边的值是否为 null 或 undefined。如果是,这个表达式就终止然后返回 undefined。否则,这个表达式继续执行就像没有错误一样。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端黑板报 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档