在 Node 14.18.0 中看到以下行为,我感到非常惊讶:
> {}?.fun();
Uncaught TypeError: b?.fun is not a function
> undefined?.fun();
undefined
我明白为什么第一条语句会引发 TypeError。{}?.fun
is undefined
,这是不可调用的。但是undefined?.fun
is 也是undefined
,那为什么不抛出就可以调用呢?ECMAScript 规范的哪一部分定义了这种行为?ECMAScript 工作组是否提供了为什么它应该以这种方式工作的任何理由?