javascript - 为什么这是有效的语法?
问题描述
在重构一些代码时,我意外地发现这是有效的语法(或者至少不会在 Firefox 中导致解析器错误):
const {} = somefunc();
somefunc
返回 anobject
并且 curly 应该包含用于解构的变量名称,当时我还没有决定这些名称是什么,所以我暂时将它们留空。
编辑器没有突出显示语法错误,所以出于好奇我对其进行了测试,令 Firefox 实际上对这种语法没有任何问题感到惊讶。
为什么这个语法有效?它真的做了一些奇怪的事情吗?
解决方案
是的,像这样的空解构非常好,只是没用。这在运行时语义中有所介绍:DestructuringAssignmentEvaluation
带参数值。
对象分配模式:
{}
履行 ?RequireObjectCoercible(值)。
返回正常完成(空)。
它所做的一切(在RequireObjectCoercible中)是要求右侧不为空也不为未定义。
推荐阅读
- python - 是否可以在没有预装应用程序的情况下在 django shell 中使用数据库?
- html - 如何在不改变颜色的情况下改变边框的不透明度
- php - 如何从表中获取所有数据,如果相同的值在一列中重复该行应该计算一次?
- android - 使用数组映射时最好使用 .put() 或 .setValueAt() 吗?
- python-2.7 - 对单词使用“排序”函数会给出一个输出,其中字母被拆分和排序
- node.js - 有没有办法在将消息从节点服务器发布到频道时获取 Discord 消息 ID?
- azure - 与 SendGrid 一起用作输出绑定时 Azure 函数中的错误处理
- python - 如何从嵌套的 xml 创建 pandas DataFrame
- jquery - 'load' 在另一个 'load' 回调中不起作用,但 'ready' 可以
- javascript - 整理动态对象