导航
×
   ❮   
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 2019 新特性


JavaScript 2019 新特性

功能 描述  
String trimStart() 移除字符串开头的空格  
String trimEnd() 移除字符串结尾的空格  
Object.fromEntries 根据键值对创建对象  
可选的 catch 绑定 允许在不需要时省略 catch 参数  
Array flat() 通过扁平化嵌套数组创建一个新数组  
Array flatMap() 映射所有数组元素并通过扁平化数组创建一个新数组  
Revised Array Sort() 浏览器现在必须使用稳定的排序算法  
Revised JSON.stringify() 现在可安全转换包含 UTF-8 代码点的字符串  
字符串中的分隔符 现在允许在字符串中使用行分隔符和段落分隔符(\u2028 和 \u2029)  
已修订的 Function.toString() 现在返回包含注释、空格和语法详细信息的源代码  

浏览器支持

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

         
Chrome
66
Edge
79
Firefox
61
Safari
12
Opera
50
2018年4月 2020年1月 2018年6月 2018年9月 2018年5月

JavaScript 字符串 trimStart()

ES2019 为 JavaScript 添加了字符串方法 trimStart()

trimStart() 方法的作用类似于 trim(),但它只移除字符串开头的空格。

示例

let text1 = "     Hello World!     ";
let text2 = text1.trimStart();
亲自试一试 »

JavaScript 字符串 trimEnd()

ES2019 为 JavaScript 添加了字符串方法 trimEnd()

trimEnd() 方法的作用类似于 trim(),但它只移除字符串末尾的空格。

示例

let text1 = "     Hello World!     ";
let text2 = text1.trimEnd();
亲自试一试 »

JavaScript Object fromEntries()

ES2019 为 JavaScript 添加了 Object 方法 fromEntries()

fromEntries() 方法可以根据可迭代的键值对创建一个对象。

示例

const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];

const myObj = Object.fromEntries(fruits);
亲自试一试 »

可选的 catch 绑定

从 ES2019 开始,如果您不需要 catch 参数,可以省略它:

示例

2019 年之前:

try {
  // 代码
} catch (err) {
  // 代码
}

After 2019:

try {
  // 代码
} catch {
  // 代码
}

JavaScript 数组 flat()

ES2019 为 JavaScript 添加了数组的 flat() 方法。

flat() 方法通过扁平化嵌套数组来创建一个新数组。

示例

const myArr = [[1,2],[3,4],[5,6]];
const newArr = myArr.flat();
亲自试一试 »

JavaScript 数组 flatMap()

ES2019 为 JavaScript 添加了数组 flatMap() 方法。

flatMap() 方法首先映射数组的所有元素,然后通过扁平化数组创建一个新数组。

示例

const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap(x => [x, x * 10]);
亲自试一试 »

稳定数组 sort()

ES2019 修订了数组的sort()方法。

2019 年之前,规范允许使用不稳定的排序算法,例如快速排序。

ES2019 之后,浏览器必须使用稳定的排序算法:

当根据某个值对元素进行排序时,元素必须保持其相对于其他具有相同值的元素的相对位置。

示例

const myArr = [
  {name:"X00",price:100 },
  {name:"X01",price:100 },
  {name:"X02",price:100 },
  {name:"X03",price:100 },
  {name:"X04",price:110 },
  {name:"X05",price:110 },
  {name:"X06",price:110 },
  {name:"X07",price:110 }
];
亲自试一试 »

在上面的例子中,按价格排序时,结果中的名称不应该处于不同的相对位置,例如:

X01 100
X03 100
X00 100
X03 100
X05 110
X04 110
X06 110
X07 110

修订了 JSON.stringify()

ES2019 修订了 JSON 的 stringify() 方法。

在 2019 年之前,JSON 无法将使用反斜杠 (\) 编码的字符转换为字符串。

示例

let text = JSON.stringify("\u26D4");
亲自试一试 »

在 ES2019 之前,对 UTF-8 代码点(U+D800 到 U+DFFF)使用 JSON.stringify()JSON 会返回类似 ��� 这样的损坏的 Unicode 字符。

在此修订之后,使用 JSON.stringify() 可以安全地转换包含 UTF-8 代码点的字符串,并使用 JSON.parse() 将其还原为原始字符串。


分隔符

字符串字面量中现在允许使用行分隔符和段落分隔符(\u2028 和 \u2029)。

在 2019 年之前,这些符号被视为行终止符,会导致错误异常。

示例

// 这在 ES2019 中有效:
let text = "\u2028";
亲自试一试 »

注意

现在,JavaScript 和 JSON 遵循相同的规则。

ES2019 之前:

text = JSON.parse('"\u2028"') 会解析为空字符串。

text = '"\u2028"' 会产生语法错误


修订后的 toString() 函数

ES2019 修订 了 toString() 函数。

toString() 方法返回一个表示函数源代码的字符串。

自 2019 年起,toString() 必须返回函数的源代码,包括注释、空格和语法细节。

2019 年之前,不同的浏览器会返回不同的函数版本(例如缺少注释和空格)。从 2019 年起,该函数应该按原样返回。

示例

function myFunction(p1, p2) {
    return p1 * p2;
}
let text = myFunction.toString();
亲自试一试 »

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


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