The SharedArrayBuffer object is used to represent a generic, fixed-length raw binary data buffer, similar to the ArrayBuffer object, but in a way that they can be used to create views on shared memory. Unlike an ArrayBuffer, a SharedArrayBuffer cannot become detached.
概览如图(保留一大串英文,是为了鼓励大家好好学英语😀)
下面会尽量保持精简,能用图和代码的地方,就尽量不写文字,保留最直观的感受,简单的API会直接给官方文档
一、ECMAScript 2016
1、Array.prototype.includes
Array.prototype.includes() - JavaScript | MDN
2、指数(幂)运算符 **
二、ECMAScript 2017
1、Object.values()
Object.values() - JavaScript | MDN
2、Object.entries()
Object.entries() - JavaScript | MDN
3、字符串填充 String padding
String.prototype.padStart() - JavaScript | MDN String.prototype.padEnd() - JavaScript | MDN
注意,Emojis和双字节字符会占据两位
4、Object.getOwnPropertyDescriptors
Object.getOwnPropertyDescriptor() - JavaScript | MDN
Object.getOwnPropertyDescriptor()
方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)5、函数参数结尾逗号
6、Async/Await
async function - JavaScript | MDN
三、ECMAScript 2018
1、共享内存与原子操作
个人认为所有更新里这是最爆炸,最强的新特性
即使有event loop的”伪多线程“和Service Worker的强力增援,但依然掩盖不了JS是单线程的事实。
共享内存与原子操作,给JS带来了多线程的功能,允许开发人员自行管理内存来开发高性能高并发的程序。
核心是
SharedArrayBuffer
对象 SharedArrayBuffer - JavaScript | MDN关键词:shared memory
直到目前为止,我们只能通过
postMessage
在JS主线程和web worker之间通信,传输数据。SharedArrayBuffer
允许共享内存,必然会带来竞态关系,后端语言会通过锁解决这个问题,这里引入了Atomics
全局对象Atomics - JavaScript | MDN
Atomics对象提供了一些方法来处理这种关系,包括读取与更新
感兴趣的可以参与以下资料(全英文,为部分同学感到蛋蛋的忧伤) A cartoon intro to SharedArrayBuffers – Mozilla Hacks – the Web developer blog ES proposal: Shared memory and atomics
2、非转义序列的模板字符串
本部分可直接查看下面链接 非转义序列的模板字符串 | esnext | es6 es7 es2017 es2018 es2019
3、对象展开运算符
4、Promise.prototype.finally()
一个新的API而已,promise相信大家都会用了 Promise.prototype.finally() - JavaScript | MDN
5、异步迭代器
提供了
for-await-of
,异步迭代,等待每个promise被resolve再执行下一个6、正则表达式相关
本部分内容,同学们可自行查阅
dotAll
模式,使 . 可以匹配任意字符后记
感谢您耐心看到这里,希望有所收获!
如果不是很忙的话,麻烦点个star⭐【Github博客传送门】,举手之劳,却是对作者莫大的鼓励。
我在学习过程中喜欢做记录,分享的是自己在前端之路上的一些积累和思考,希望能跟大家一起交流与进步,更多文章请看【amandakelake的Github博客】
参考链接 Here are examples of everything new in ECMAScript 2016, 2017, and 2018