ES2020
?.
可选链操作符
tc39/proposal-optional-chaining
js
obj?.prop // optional static property access
obj?.[expr] // optional dynamic property access
func?.(...args) // optional function or method call
等价关系
js
a?.b // undefined if `a` is null/undefined, `a.b` otherwise.
a == null ? undefined : a.b
注意false
是Boolean
对象的实例,因此false.b
值为undefined
,不会报错。
同理a=0
时,a.b
值为undefined
也不会报错,只是在语法上0.b
直接这么写会报错
??
空值合并操作符
tc39/proposal-nullish-coalescing
行为类似||
,但假值只有null
、undefined
,有效值0
、false
、''
export {v} from 'mod'
globalThis
tc39/proposal-global
统一获取浏览器、Web Worker、Node.js环境的顶层对象,可替代window
、self
、global
str.matchAll()
tc39/proposal-string-matchallstr.match(regex)
对于regex
是否存在修饰符g
表现不同,使用matchAll
可以实现类似match多次匹配的效果
Promise.allSettled()
tc39/proposal-promise-allSettled
BigInt
tc39/proposal-bigint
这是 ECMAScript 的第八种数据类型。
BigInt 只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。
import() 动态导入
import.meta
tc39/proposal-import-meta
规范中说meta
是一个可读写的属性,并例举了meta
的2种属性url
,scriptElement
用法,但没有对所有属性进行规范。
根据MDN文档,只能确定i
存在
规范for-in循环枚举字段的顺序
tc39/proposal-for-in-order 由于涉及浏览器引擎实现,不能或者不值得polyfill,因此该项改进可以忽略。