ES6处理了什么问题

ECMAScript 6.0于2015 年 6 月正式宣布了,成为JavaScript 言语的下一代规范。ES6增添的言语特性处置惩罚了哪些题目,会给开发者哪些轻易,是本文重要讨论的题目。

增添了对unicode字符的支撑

ES5对字符的处置惩罚有限,没法很好地处置惩罚码点大于0xFFFF的字符。

ES6在string原生要领中支撑码点大于0xFFFF的字符,获得码点或是遍历,都能够直接操纵;而且对字符差别的示意要领做了一致化。

在正则表达式里新增\u \s修饰符,使得正则对特别字符的婚配不需要开发者分外处置惩罚。

异步编程

ES6 前异步编程的处置惩罚体式格局:

  • 回调函数
  • 事宜监听
  • 宣布/定阅
  • 自定义promise

Promise

ES6供应了原生的Promise对象,一致了用法和规范。

  • 对象的状况不受外界影响。能够轻易地猎取异步操纵的状况、给予对应操纵。
  • 一旦状况转变,就不会再变,任何时刻都能够获得这个效果。

瑕玷

  • 没法作废Promise,一旦新建它就会马上实行,没法半途作废。
  • 假如不设置回调函数,或在catch中再次抛出毛病。Promise内部抛出的毛病,不会回响反映到外部。
  • 当处于pending状况时,没法得知现在希望到哪个阶段(刚刚开始照样行将完成)。

Generator

Generator 函数形式上与一般函数无异,特性有二

  1. function关键字与函数名之间有一个星号;
  2. 函数体内部运用yield表达式,来表明函数实行的状况。

意义:

  • 能够交出函数的实行权(即停息实行)
  • 函数体表里的数据交换

    能够在 Generator 函数运转的差别阶段,调解函数行动。包含从外部向内部注入差别的值,掌握返回和抛出毛病。

async

(ES2017 规范引入)

从明白上来讲, async函数相当于把Generator 函数的星号(*)替换成async,将yield替换成await

但相比较generate而言,内置实行器,有更易于明白的语义。

async函数返回一个 Promise 对象,能够运用then要领添加回调函数。async函数内部return语句返回的值,会成为then要领回调函数的参数。

当函数实行的时刻,一旦碰到await就会先返回,比及异步操纵完成,再接着实行函数体内背面的语句。

削减全局变量和要领

比方,ES6 将全局要领parseInt()和parseFloat(),移植到Number对象上面。 逐渐削减全局性要领,使得言语逐渐模块化。

代码作用域

变量的声明体式格局

增添let, const的变量声明体式格局,不存在变量提拔,不允许反复声明,使言语运用越发严谨。

块级作用域

使得变量的作用域更利于治理,也使得马上实行函数表达式不再必要了。

箭头函数

让this绑定定义时地点的作用域,而不是指向运转时地点的作用域,也使得表达越发简约。

语法糖

ES6推出了模版字符串,使得多行字符串及混合变量的字符串写起来越发轻易。

对象增添属性名表达式与简约示意法。

增添遍历器机制,为种种差别的数据结构供应一致的接见机制。

增添解构的语法,取值更直观轻易。

增添class关键字来定义类,过去,天生实例对象的传统要领是经由过程组织函数。不再和传统面向对象言语有大的差别。且支撑extends。

元编程

引入Proxy对象,能够阻拦某些操纵并完成自定义行动。

引入 Rflect对象,能够猎取默许操纵,能够将默许操纵从处置惩罚顺序转发到目的。

Symbol

symbol 是一种基础数据类型 ,供应一种机制,保证每一个属性的名字都是举世无双,从根本上防备属性名的争执。

更多的原生要领

ES6供应了更多的原生要领,避免了开发者反复造轮子。如字符串的查找。

  • 正则的婚配划定规矩,如新加的y、s修饰符。
  • 增添了set、map的数据结构。
  • 增添Number.EPSILON等数值要领,使得对数值操纵易于在精度方面举行掌握。
    //虽然JavaScript 不适合举行科学和金融方面的准确盘算
  • 增添对对象的操纵与读取的API。

优化

对尾递归举行优化,给予javscript运转复杂度更高的要领的才能。

参考

ECMAScript 6 入门

    原文作者:imirror707
    原文地址: https://segmentfault.com/a/1190000013633618
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞