重构某些代码时,我偶然发现这是有效的语法(或至少不会在firefox中引起解析器错误)
const {} = somefunc();
somefunc返回一个对象,而卷曲的对象应该包含用于解构的变量名称,当时我还没有决定这些名称是什么,所以我暂时将其留空。
编辑器未突出显示语法错误,出于好奇,我对其进行了测试,并惊讶于Firefox实际上对此语法没有问题。
为什么这种语法有效?它实际上做些奇怪的事情吗?
对象分解允许跳过值:
const {a, c} = {'c': 1, 'b': 2, 'a': 3};
因此没有参数是可以接受的,但是仍然没用:
const {} = {};
是的,像这样的空的销毁是完全可以的,只是没有用。在Runtime Semantics: DestructuringAssignmentEvaluation]中覆盖
带有参数值。
ObjectAssignmentPattern:
{}
执行? RequireObjectCoercible(值)。
返回NormalCompletion(空)。
(在RequireObjectCoercible中所做的所有事情都是要求右侧不为null或未定义。