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,因此该项改进可以忽略。