ES2019
Array.prototype.flat()/flatMap()
flat()
根据传入参数,深度递归遍历数组,并将所有元素与遍历的子数组中的元素合并为一个新数组返回。flatMap()
与map()
方法的深度为 1 的flat()
几乎相同。
1 | var arr1 = [1, 2, 3, 4] |
String.prototype.trimStart()/trimLeft()/trimEnd()/trimRight()
在 ES5 中,可以通过 trim()来去掉字符首尾的空格。
ES10 之后可以使用trimStart()/trimLeft()
去掉开头的空格。trimEnd()/trimRight()
去掉结尾的空格。
不过这里有一点要注意的是,trimStart()
跟 trimEnd()
才是标准方法,trimLeft()
跟 trimRight()
只是别名。
Object.fromEntries()
把键值对列表转换为一个对象,是Object.entries()
的反函数
1 | const entries = new Map([ |
Symbol.prototype.description
只读属性,返回Symbol
对象的可选描述的字符串。与Symbol.prototype.toString()
不同的是,它不会包含Symbol
的字符串。
1 | console.log(Symbol('desc').toString()); // "Symbol(desc)" |
String.prototype.matchAll
返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器。并且返回一个不可重启的迭代器。
1 | var regexp = /t(e)(st(\d?))/g |
Function.prototype.toString()
返回注释与空格
在以往的版本中,Function.prototype.toString()
得到的字符串是去掉空白符号的,但是从 ES10 开始会保留这些空格,如果是原生函数则返回你控制台看到的效果。
1 | function sum(a, b) { |
try-catch
以往版本中,try-catch
里的catch
后面必须带异常参数
1 | // ES10之前 |
但是在 ES10 之后,这个参数却不是必须的,如果用不到,我们可以不用传。
1 | try { |
BigInt
内置对象,提供一种方法表示大于 2^53-1 的整数。BigInt
可以表示任意大的整数。
定义BigInt
:10n
或BigInt()
以下操作符可以和BigInt
一起使用:+
,-
,*
,**
,%
。除>>>
(无符号右移)之外的位操作符也可以支持。因为BigInt
都是有符号的,>>>
(无符号右移)不能用于BigInt
。BigInt
不支持单目 (+) 运算符。/
操作符对于整数的运算也没问题。可是因为这些变量是BigInt
而不是BigDecimal
,该操作符结果会向零取整,也就是说不会返回小数部分。BigInt
和Number
不是严格相等的,但是宽松相等的。
所以在BigInt
出来以后,JS 的原始类型便增加到了 7 个,如下:
Boolean
Null
Undefined
Number
String
Symbol (ES6)
BigInt (ES10)
globalThis
包含类似于全局对象this
值,
1 | globalThis === this // true |
import()
静态的import
语句用于导入由另一个模块导出的绑定。无论是否声明了严格模式,导入的模块都运行在严格模式下。
在浏览器中,import
语句只能在声明了type='module'
的script
的标签中使用。
但是在 ES10 之后,我们有动态import()
,它不需要依赖type="module"
的script
标签。
私有元素与方法
1 |
|