导航
×
   ❮   
HTML CSS JavaScript PHP Go ECMS

JavaScript 教程

JS 简介 JS 如何使用 JS 输出 JS 语法 JS 语句 JS 注释 JS 变量 JS 运算符 JS 条件语句 JS 循环 JS 字符串 JS 数字 JS 函数 JS 对象 JS 日期 JS 数组 JS 类型化数组 JS 集合 JS Map 映射 JS Math JS 正则表达式 JS 数据类型 JS 错误 JS 事件 JS 编程 JS 关键字参考 JS 保留关键字参考 JS 运算符参考 JS 运算符优先级 JS UTF-8 字符 JS UTF-8 符号 JS UTF-8 表情符号 JS 版本

JavaScript ECMAScript 2018


JavaScript 2018 新特性

功能 描述  
异步迭代 允许在 for/of 循环中使用 await 关键字  
Promise Finally 当 Promise 被"完成"或"拒绝"时,会安排一个函数执行  
数组剩余元素 允许销毁数组并收集剩余元素  
对象Rest(剩余)属性 允许销毁对象并回收剩余资源  
共享内存 允许程序的不同部分访问同一块内存  

2018 年新增正则表达式功能

功能 描述  
/s 允许使用点号 (.) 元字符匹配行终止符  
\p{} 匹配具有 Unicode 字符属性的字符  
(?<=y) (?<=y)x 匹配"x",如果"x"前面有"y"。  
(?<!y) (?<!y)x 匹配"x",如果"x"前面没有"y"。  
(?<name>) 捕获文本并命名(标签)  

浏览器支持

自2020年6月起,所有现代浏览器均支持ECMAScript 2018:

         
Chrome
64
Edge
79
Firefox
78
Safari
12
Opera
51
2018年1月 2020年1月 2020年6月 2018年9月 2018年2月

JavaScript 异步迭代

ECMAScript 2018 添加了异步迭代器和可迭代对象。

对于异步可迭代对象,我们可以在for/of循环中使用await关键字。

示例

for await () {}

JavaScript Promise.finally()

ECMAScript 2018 通过 Promise.finally 完善了 Promise 对象的完整实现:​​

Promise.finally() 定义了一个函数,当 Promise 被成功解析或被拒绝时,该函数将被执行。

示例

let myPromise = new Promise();

myPromise.then();
myPromise.catch();
myPromise.finally();

JavaScript 数组剩余元素

ECMAScript 2018 添加了剩余运算符 (...)。

剩余运算符 (...) 允许我们销毁数组并收集剩余元素:

 

实例

let a, rest;
const arr1 = [1,2,3,4,5,6,7,8];

[a, ...rest] = arr1;
亲自试一试 »

示例 2

let a, b, rest;
const arr1 = [1,2,3,4,5,6,7,8];

[a, b, ...rest] = arr1;
亲自试一试 »

JavaScript 对象剩余属性

ECMAScript 2018 添加了剩余操作符 (...)。

这允许我们销毁一个对象,并将剩余部分收集到一个新对象中:

示例

// 创建一个对象:
const car = {type:"Fiat", model:"500", color:"white"};

// 解构对象let {type, model, color} = car;
document.getElementById("demo").innerHTML = "The car type is: " + type;
亲自试一试 »

JavaScript 正则表达式新增特性

ECMAScript 2018 新增 4 项正则表达式特性:

  • /s (dotAll) 标志
  • Unicode 属性转义 (\p{...})
  • 后向断言 (?<=y)x 和 (?<!y)x
  • 命名捕获组

正则表达式 /s 标志

示例

let text = "LineLine.";

let pattern = /Line./gs;
let result = text.match(pattern);
亲自试一试 »

描述

`s(dotAll)标志允许点(.)元字符匹配任何字符,包括行终止符(例如, , \u2028, \u2029).

如果没有s,则无法匹配行终止符。


正则表达式 \p 元字符

示例

let text = "Hello 😄";

let pattern = /\p{RGI_Emoji}/v;
let result = pattern.test(text);
亲自试一试 »

描述

\p "Unicode 属性"元字符匹配任何具有 Unicode 字符属性的字符。


正则表达式后行断言

示例 (?<=y)x

let text = "Hello W3Schools";

let pattern = /(?<=Hello )W3Schools/;
let result = pattern.test(text);
亲自试一试 »

描述

(?<=y)x 匹配"x",如果"x"前面有"y"。


负向后视

示例 (?<!y)x

let text = "Hello W3Schools";

let pattern = /(?<=Hello )W3Schools/;
let result = pattern.test(text);
亲自试一试 »

描述

(?<!y)x 匹配"x",如果"x"前面没有"y"。


正则表达式命名捕获组

示例 (?<name>...)

const text = "Name: John Doe";

// 使用命名捕获组
const regex = /(?<firstName>\w+) (?<lastName>\w+)/;
const match = text.match(regex);

let fName = match.groups.firstName;
let lName = match.groups.lastName;
亲自试一试 »

解释

  • (?<firstName>\w+) 捕获一个单词并将其标记为 firstName
  • (?<lastName>\w+) 执行相同的操作,将 lastName 标记为 firstName
  • text.match() 返回一个包含 groups 属性的数组
  • match.groups() 返回一个对象:
    {firstName:"John", lastName:"Doe" }

当使用带有捕获组的正则表达式时,字符串的 match() 方法会返回一个包含 groups 属性的结果数组。此 groups 属性是一个对象,其中包含指定捕获组的匹配项。


JavaScript 线程

在 JavaScript 中,您可以使用 Web Workers API 创建线程。

工作线程用于在后台执行代码,以便主程序可以继续执行。

工作线程与主程序同时运行。程序的不同部分同时执行可以节省时间。

JavaScript 共享内存

共享内存是一种允许线程(程序的不同部分)访问和更新同一内存中的相同数据的特性。

除了在线程之间传递数据外,您还可以传递一个指向数据保存所在内存的 SharedArrayBuffer 对象。

SharedArrayBuffer

SharedArrayBuffer 对象表示一个固定长度的原始二进制数据缓冲区,类似于 ArrayBuffer 对象。


freew3c.com 中文网是独立运营的中文开发者学习平台,与 freew3c.com 无关联。提供的内容仅用于学习和测试,不保证内容的正确性。


Copyright @2020-2026 京ICP备888888号-8