ES10新增内容
大约 2 分钟JavaScriptES10JavaScript
ES10(ECMAScript 2019)新特性
Array.prototype.flat()
和 Array.prototype.flatMap()
方法
1. 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]
String.prototype.trimStart()
和 String.prototype.trimEnd()
方法
2. - 这些方法用于去除字符串开头或结尾的空格字符。
示例:
const stringWithSpaces = " Hello, World! ";
const trimmedStart = stringWithSpaces.trimStart();
// trimmedStart: 'Hello, World! '
const trimmedEnd = stringWithSpaces.trimEnd();
// trimmedEnd: ' Hello, World!'
Object.fromEntries()
方法
3. - 允许将键值对数组转换为对象。与
Object.entries()
相反。
示例:
const keyValueArray = [
["key1", "value1"],
["key2", "value2"],
];
const objectFromEntries = Object.fromEntries(keyValueArray);
// objectFromEntries: { key1: 'value1', key2: 'value2' }
Symbol.prototype.description
属性
4. - 允许获取 Symbol 的描述字符串。
示例:
const sym = Symbol("My Symbol");
console.log(sym.description); // 输出: 'My Symbol'
toString()
方法修订
5. 函数的 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;
// }
JSON.stringify
6. 更友好的 - 对于一些超出范围的 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"');
// ''
catch
参数
8. 可选的 - 允许
catch
块不带参数。
示例:
try {
throw new Error('This is not valid');
} catch {
console.error(`Error occurred.`);
}