一起看看在 ES2019 中带来的新特性。
New
- Array.prototype.{flat,flatMap}
- Object.fromEntries
- String.prototype.{trimStart,trimEnd}
- Optional Catch Binding
- JSON ⊂ ECMAScript
- Well-formed JSON.stringify
- Function.prototype.toString
- Symbol.prototype.description
Array.prototype.{flat,flatMap}
flat()
flat()
方法会递归到指定深度将所有子数组连接,并返回一个新数组。
1 | var newArray = arr.flat(depth); |
1 | // demo |
flatMap()
flatMap()
方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。等于 map + 深度值 1 的 flat。
1 | // demo |
Object.fromEntries
方法 Object.fromEntries()
把键值对列表转换为一个对象。是 Object.entries 的反转。
1 | // demo |
String.prototype.{trimStart,trimEnd}
trimStart()
方法从字符串的开头删除空格。trimLeft()别名;trimRight()
方法从一个字符串的右端移除空白字符。trimRight()别名。
不会直接修改原字符串本身。
1 | // demo |
Optional Catch Binding
try catch
异常捕获变成可选。
1 | // Before |
JSON ⊂ ECMAScript
现在,字符串文字中允许使用行分隔符(U + 2028)和段落分隔符(U + 2029)符号。以前会导致 SyntaxError 异常。
1 | eval('"\u2028"'); |
Well-formed JSON.stringify
更加友好的 JSON.stringify,修复了一些超出范围的 unicode 展示。
Function.prototype.toString
.toString()
现在返回源代码文本的精确切片,包括空格和注释。
1 | function /* a comment */ foo() {} |
Symbol.prototype.description
description
是一个只读属性,它会返回 Symbol 对象的可选描述的字符串。
1 | Symbol("desc").toString(); // "Symbol(desc)" |
More
tc39/proposals: https://github.com/tc39/proposals
参考:
What’s new in JavaScript ES2019 > ECMAScript - A Taste from ES2019 (ES10) > MDN web docs