美文网首页程序员JavaScript
JS即将到来的新特性(2018+)

JS即将到来的新特性(2018+)

作者: saltfish666 | 来源:发表于2018-08-12 22:27 被阅读0次

自从2015年ES2015发布以后,ECMAScript开始每年进行一次更新。下面是ES即将到来的特性,它们可能会在ES2019或ES2020中实现,相信你一定会喜欢的。

Optional Chaining(安全的链式操作)

在实际编程过程中,我们经常会遇到对象层层嵌套的情况。

const data = {
  article: {
    user: {
      email: '123@gmail.com',
    } 
  }
}

但是我们实际工作中,经常遇到数据不完整的情况。如果你直接写出data.article.user.email这样的代码,那么一旦出现

{
  article: {
    user: {
    } 
  }
}

这样的数据,你的代码就崩溃

Uncaught TypeError: Cannot read property 'email' of undefined

为了提高代码的稳定系,你可能写出
这样的代码

const email = data && data.article && data.article.user && data.article.user.email
console.log(email)

我之前就是这样做的,但是这样太丑陋了。。
新的提案引入了?.运算符

console.log( data.article?.user?.email)

如果之前的数据不是对象类型,就不会触发后续的操作。

怎么样,是不是一个能提高代码可读性的特性?

Nullish coalescing(空值合并)

我们经常要对一个数据进行空值检测,比如说

var a =  value || 'default value'

如果value不为空,就把它的值赋给a,否者给a一个默认值。
上述的代码的问题在于|| 运算符把 null undefined '' 0 false 都看作空值。实际上很多时候后面三者是有意义的值,为了避免这种情况,我们要额外做很多判断。新的??运算符简化了这点,它只会把 null undefined 看做空值

var a = false ??  'default value'
console.log(a) // false
a =  false ||  'default value'
console.log(a) // 'default value'

Pipeline operator (管道运算符)

看这样的代码

function doubleSay (str) {
  return str + ", " + str;
}
function capitalize (str) {
  return str[0].toUpperCase() + str.substring(1);
}
function exclaim (str) {
  return str + '!';
}
let result = exclaim(capitalize(doubleSay("hello")));
result //  "Hello, hello!"

我们经常遇到:把一个函数的返回值作为另一个函数的参数,如果函数嵌套的比较多,上面的代码可读性就会很差,新的提案引入了管道的概念。
对 Linux命令行熟悉的同学,肯定不会对管道陌生。管道运算符就是把前一个函数的返回值当做后一个函数的参数。

let result = "hello"
  |> doubleSay
  |> capitalize
  |> exclaim;

result // "Hello, hello!"

怎么样,这样是不是让代码非常易读?和Linux的管道符一模一样。

相关文章

  • JS即将到来的新特性(2018+)

    自从2015年ES2015发布以后,ECMAScript开始每年进行一次更新。下面是ES即将到来的特性,它们可能会...

  • Javascript即将到来的3个新特性

    1、Optional Chaining(可选链式调用) 这是我们现在 ES6 中会遇到的问题,原因是 user 中...

  • Java 15 即将到来,新特性速览!

    在发布前夕,我们不妨先一窥新版 JDK 的新特性: 第二个外部内存访问 API(孵化阶段),它将使 Java 程序...

  • JS新特性

    ES ES5 ES6 箭头函数 Promise Symbol属性 Iterator Generator async...

  • 前端技能概况

    html 块级元素、行内元素、盒子模型 H5新特性 css css3新特性 flex 布局 动画 js js基础 ...

  • JS即将发布数组的4个新特性

    新特性总览:at(): 数组支持索引查询Array Group: 数组元素分类;Array find from l...

  • CSS相关文章

    前端面试之 CSS3 新特性 除了 HTML5 的新特性,CSS3 的新特性也是面试中经常被问到的。如何用 js ...

  • Typescript 3.7 常用新特性

    写在前面 不是完整的版本新特性,这里只写出了我觉得常用的新特性 可选链式运算符 ?. js 也支持了这个特性 ob...

  • React Native面向未来架构

    既然面向未来,那么项目的架构设计采用React/React native的新特性,并且为即将来到的新特性预留位置;...

  • JavaScript 获得变量的类型

    根据上图 js新特性支持还算良好,注意下面两种情况

网友评论

    本文标题:JS即将到来的新特性(2018+)

    本文链接:https://www.haomeiwen.com/subject/icsebftx.html