我最近读过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),但没有找到任何东西。
最佳答案
您看到的称为复合语句
。
关于javascript - 为什么在函数中定义分块对象(由于缺乏更好的术语)是有效的 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55645678/