ECMAScript新特性

关于ECMAScript

ECMAScript和JavaScript的关系

1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。、

该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有两个原因。一是商标,Java 是 Sun 公司的商标,根据授权协议,只有 Netscape 公司可以合法地使用 JavaScript 这个名字,且 JavaScript 本身也已经被 Netscape 公司注册为商标。二是想体现这门语言的制定者是 ECMA,不是 Netscape,这样有利于保证这门语言的开放性和中立性。

因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 JScript 和 ActionScript)。

所以可以概括为:

  • ECMAScript:一种脚本语言的标准化规范,并不是某种具体的语言
  • JavaScript:是对ECMAScript的实现和扩展

ECMAScript发展历程

名称 标准版本 发行时间
ECMAScript2019(ES10) 10 2019年6月
ECMAScript2018(ES9) 9 2018年6月
ECMAScript2017(ES8) 8 2017年6月
ECMAScript2016(ES7) 7 2016年6月
ECMAScript2015(ES6) 6 2015年6月
ECMAScript 5.1(ES5.1) 5.1 2011年6月
ECMAScript5(ES5) 5 2009年12月
ECMAScript4(ES4) 4 被放弃
ECMAScript3(ES3) 3 1999年12月
ECMAScript2(ES2) 2 1998年6月
ECMAScript1(ES1) 1 1997年6月

其中以ES2015(ES6)更新功能最多,主要包含:

  • 对原有语法进行增强
  • 解决原有语法上的一些问题或者缺陷
  • 全新的对象、全新的方法、全新的功能
  • 全新的数据类型和数据结构

关于ES6标准的官方文档,请点击这里,中文文档可以点击这里

更新功能

ES2019

1.Array新增实例方法:
  • flat:按照指定的深度将一个数组扁平化,如果需要将数组完全拍扁变成一维数组,则指定为无限大,即是Infinity,相反如果不指定深度,其默认值是1。
  • flatMap: 等于一个数组先调用完map函数再调用flat函数将其扁平化,扁平化的深度固定为1。
2.Object新增静态方法:
  • fromEntries:将一个iterable对象返回的一系列键值对转换为一个对象
3.String新增实例方法:
  • trimStart:
  • trimEnd:
4.Symbol新增属性:
  • description:只读属性,返回Symbol描述信息。
5.改进Array.prototype.sort

改进之后的sort方法是个稳定的方法,即相同判断条件的项的次序不会改变。

6.改进Function.prototype.toString()

ES2019之前,调用function的toString方法会将方法体里面的空格字符省略掉,ES2019之后,要求一定要返回函数源代码(保留空格字符)或者一个标准的占位符,就是说打印的格式和源码格式是一样的,这样就更便于阅读。

ES2018

1.Promise新增实例方法:
  • finally:无论resolved或是rejected都会调用这个回调。
2.异步迭代器
3.对象的rest/spead(剩余/展开)操作
4.正则表达式相关:
  • s/dotAll:新增标志s用来表示 dotAll。以使.可以匹配任意字符
  • named capture group:给捕获到的匹配项命名
  • lookbehind assertion:后行断言
  • Unicode 转义:

详细介绍请见点击这里

ES2017

1.新增关键字async/await
2.Object新增3个静态方法:
  • Object.values:获取对象所有属性的值组成的数组
  • Object.entries:获取对象所有属性的数组,数组里的每一项就是属性的键值对
  • Object.getOwnPropertyDescriptors:获取对象属性信息,可以用来复制出一个新对象。
3.String新增2个实例方法:
  • padStart:如果字符串不够指定长度,会在头部以给定字符串补全
  • padEnd:如果字符串不够指定长度,会在尾部以给定字符串补全

如果第二个参数不传,默认以空格补全

'1'.padStart(10, '0')                   // 0000000001
'12'.padStart(10, '0')                  // 0000000012
'123456'.padStart(10, '0')              // 0000123456

'1'.padEnd(10)                          // 1abcabcabc
'12'.padEnd(10)                         // 12abcabcab
'123456'.padEnd(10)                     // 123456abca
4. 集合类型的字面量形式可以使用尾逗号
let a = [1, 2, 3, 4,]
let o = {'k1': 'v1', 
         'k2': 'v2',
        }

ES2016

1.Array新增实例方法
  • includes:判断数组是否包含给定的值
2.指数运算符 **

ES2015

1.let和const
2.箭头函数
3.函数参数设置默认值
4.class关键字声明类
5.Promise
6.Generator
7.模板字面量
8.对象字面量增强
9.结构分配
10.展开操作符
11.for...of循环
12.新增Map & Set数据类型
13.新增Proxy
14.模块化

附录:

一张图展示ES2016~ES2019更新点:


QQxrT01m.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容