javascript - 为什么在函数中定义分块对象(由于缺乏更好的术语)是有效的 JavaScript?

标签 javascript async-await es6-promise

我最近读过this article关于 React 单元测试。

作者在其中使用了如下语法:

describe('ClickCounter component', async assert => {
  const createCounter = clickCount =>
    render(<ClickCounter clicks={ clickCount } />)
  ;
  {
    const count = 3;
    const $ = createCounter(count);
    assert({
      given: 'a click count',
      should: 'render the correct number of clicks.',
      actual: parseInt($('.clicks-count').html().trim(), 10),
      expected: count
    });
  }
  {
    const count = 5;
    const $ = createCounter(count);
    assert({
      given: 'a click count',
      should: 'render the correct number of clicks.',
      actual: parseInt($('.clicks-count').html().trim(), 10),
      expected: count
    });
  }
});

我感到困惑的部分是以 assert 作为参数的回调函数的内容。

在其中,他只是将一个物体链接到另一个物体上。他基本上是这样做的:

const myFunc = () => {
  {
    // object that confuses me, with promise (`assert`) which resolves
  }
  {
    // another object
  }
}

并且以某种方式执行这些对象中的代码。在我看过的任何有关 JavaScript 的类(class)或书籍中,我从未见过这样的代码。我也从未在任何其他库或框架中使用过这种语法。但是,我测试了它,代码有效,测试全部运行。

请注意,他也从不返回任何东西。即使他使用关键字async,他也不会等待任何事情。

为什么这些分块对象是有效的 JavaScript?它是如何工作的?对此有明确的术语吗?我查看了 MDN(和 Google),但没有找到任何东西。

最佳答案

您看到的称为复合语句

MDN

关于javascript - 为什么在函数中定义分块对象(由于缺乏更好的术语)是有效的 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55645678/

相关文章:

javascript - 为什么我的行不会突出显示? - Angular

javascript - 如何在 Sencha Touch 中动态创建 xtype 模板

javascript - ASP MVC 5 自动完成不起作用

javascript - 如何在 JavaSCript 中将 JSON 数据存储在变量中?

javascript - Promise.all 内的函数调用

javascript - 当 HTTP 响应有失败代码时,如何从 JSON 响应读取属性?

javascript - 在 Vue 中保存异步数据的最佳方式是什么?

c# - Task.Yield() 之后 SynchronizationContext 丢失

c# - 异步调用永远不会在 Asp.Net MVC 中返回

javascript - Node.js: promise 内的响应