为什么使用这种有效语法?

问题描述 投票:0回答:2

重构某些代码时,我偶然发现这是有效的语法(或至少不会在firefox中引起解析器错误)

const {} = somefunc();

somefunc返回一个对象,而卷曲的对象应该包含用于解构的变量名称,当时我还没有决定这些名称是什么,所以我暂时将其留空。

编辑器未突出显示语法错误,出于好奇,我对其进行了测试,并惊讶于Firefox实际上对此语法没有问题。

为什么这种语法有效?它实际上做些奇怪的事情吗?

javascript destructuring
2个回答
1
投票

对象分解允许跳过值:

const {a, c} = {'c': 1, 'b': 2, 'a': 3};

因此没有参数是可以接受的,但是仍然没用:

const {} = {};

0
投票

是的,像这样的空的销毁是完全可以的,只是没有用。在Runtime Semantics: DestructuringAssignmentEvaluation]中覆盖

带有参数值。

ObjectAssignmentPattern:{}

  1. 执行? RequireObjectCoercible(值)。

  2. 返回NormalCompletion(空)。

(在RequireObjectCoercible中所做的所有事情都是要求右侧不为null或未定义。

© www.soinside.com 2019 - 2024. All rights reserved.