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.`);
}
