Javascript 分解分配,但没有模式

Javascript 分解分配,但没有模式,javascript,Javascript,以下内容似乎是有效的JavaScript: const{}={foo:'foo'} 空的解构分配模式(这个词对吗?)是否有一个特定的用例,比如这样?我认为它是为了保持一致性。允许对空属性列表进行分解,因为否则,他们必须实现代码来专门禁止它 虽然它可能没有任何作用,但它仍然是完全正确的;与未使用的变量或其他类似的冗余没有什么区别。它也可以使重构过程更容易:属性可以被添加/移除到一个破坏模式,而不必担心如果在中间某个点命中0,就必须移除整个任务。 此外,正如@Bergi在他们的评论中所说,它至少断

以下内容似乎是有效的JavaScript:

const{}={foo:'foo'}

空的解构分配模式(这个词对吗?)是否有一个特定的用例,比如这样?

我认为它是为了保持一致性。允许对空属性列表进行分解,因为否则,他们必须实现代码来专门禁止它

虽然它可能没有任何作用,但它仍然是完全正确的;与未使用的变量或其他类似的冗余没有什么区别。它也可以使重构过程更容易:属性可以被添加/移除到一个破坏模式,而不必担心如果在中间某个点命中0,就必须移除整个任务。
此外,正如@Bergi在他们的评论中所说,它至少断言右侧是一个对象,不是空的或未定义的。

我认为没有用例。这是公认的语法。使用它真的没有意义。这些事情经常发生。它不起任何作用,所以任何不涉及任何动作的用例我猜都是胡乱假设:在语法中,在某些边缘情况下,代码生成器可以轻松地使用它(而不会真正损害任何东西)。我想我能想到的唯一用例是自动生成代码时。比如说,您正在生成“此列表中的所有属性都应该有变量”,但出于任何原因,该列表都是空的。您可以使用用于代码生成的通用逻辑生成此代码,而无需考虑边缘情况。尽管如此,我还是认为这将是极少数的用例。如果有机会的话。我怀疑这是有意的,甚至是有意的。似乎要禁止这个构造所涉及的工作比接受它要多。我认为它是为了一致性。允许对空属性列表进行解构,否则,他们必须实现代码来禁止此表单。虽然它没有任何用途,但它仍然是完全正确的;与未使用的变量或其他类似的冗余没有什么区别。这也可能使重构过程更容易。但是……恰恰相反!规范在ObjectAssignmentPattern的定义中明确地包括了它,解释和。