跳至主要內容

ES10新增内容

黄曦大约 2 分钟JavaScriptES10JavaScript

ES10(ECMAScript 2019)新特性

1. Array.prototype.flat()Array.prototype.flatMap() 方法

  • flat() 方法用于将嵌套数组扁平化为指定深度的数组。
  • flatMap() 方法在进行映射后再执行扁平化操作。

示例:

const nestedArray = [1, [2, [3]]];
const flatArray = nestedArray.flat(2);
// flatArray: [1, 2, 3]

// flatMap 是先Map,将num 转化成 [num * 2, num * 3] 再扁平化
const array = [1, 2, 3];
const mappedFlatArray = array.flatMap((num) => [num * 2, num * 3]);
// mappedFlatArray: [2, 3, 4, 6, 6, 9]

2. String.prototype.trimStart()String.prototype.trimEnd() 方法

  • 这些方法用于去除字符串开头或结尾的空格字符。

示例:

const stringWithSpaces = "   Hello, World!   ";
const trimmedStart = stringWithSpaces.trimStart();
// trimmedStart: 'Hello, World!   '

const trimmedEnd = stringWithSpaces.trimEnd();
// trimmedEnd: '   Hello, World!'

3. Object.fromEntries() 方法

  • 允许将键值对数组转换为对象。与 Object.entries() 相反。

示例:

const keyValueArray = [
  ["key1", "value1"],
  ["key2", "value2"],
];
const objectFromEntries = Object.fromEntries(keyValueArray);
// objectFromEntries: { key1: 'value1', key2: 'value2' }

4. Symbol.prototype.description 属性

  • 允许获取 Symbol 的描述字符串。

示例:

const sym = Symbol("My Symbol");
console.log(sym.description); // 输出: 'My Symbol'

5. 函数的 toString() 方法修订

  • toString() 方法返回当前函数源代码的字符串,现在会保留注释和空格。

示例:

const fn = (a, b) => {
  // return a + b value
  const c = a + b;
  return c;
};
console.log(fn.toString());
// 输出:
// (a, b) => {
//   // return a + b value
//   const c = a + b;
//   return c;
// }

6. 更友好的 JSON.stringify

  • 对于一些超出范围的 Unicode 字符串,为其输出转义序列,使其成为有效 Unicode。

示例:

// Before
console.log(JSON.stringify('\uD800')); // "�"

// ES2019
console.log(JSON.stringify('\uD800')); // "\ud800"

7. JSON 超集

  • 之前如果 JSON 字符串中包含有行分隔符(\u2028)和段落分隔符(\u2029),那么在解析过程中会报错。现在对它们进行了支持。

示例:

// Before
JSON.parse('"\u2028"');
// SyntaxError

// ES2019
JSON.parse('"\u2028"');
// ''

8. 可选的 catch 参数

  • 允许 catch 块不带参数。

示例:

try {
  throw new Error('This is not valid');
} catch {
  console.error(`Error occurred.`);
}