为什么在函数中定义分块对象(缺乏更好的用语)才是有效的JavaScript?

时间:2019-04-12 06:26:05

标签: javascript async-await es6-promise

我最近阅读了this article的单元测试React。

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

# STATIC_URL = 'https://storage.googleapis.com/tulaibucket/static/'

if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so use a Google Cloud SQL database.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': ‘MYHOST’,
            'USER': ‘MYUSER’,
            'PASSWORD': ‘MYPASSWORD’,
            'NAME': ‘DBNAME’,
        }
    }
else:
    # Running in development, so use a local MySQL database.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME’: ‘DBNAME’,
            'USER': ‘MYUSER’,
            'PASSWORD': ‘MYPASSWORD’,
        }
    }

让我感到困惑的部分是以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

以某种方式执行这些对象中的代码。在我观看或阅读过的JavaScript书籍中,我从未见过这样的代码。我也从未体验过在任何其他库或框架中使用过这种语法。但是,我对其进行了测试,并且代码可以正常运行,所有测试都可以运行。

注意他怎么也从不退货。而且,即使他使用关键字const myFunc = () => { { // object that confuses me, with promise (`assert`) which resolves } { // another object } } ,也不会async

为什么这些分块的对象有效的JavaScript?它是如何工作的?并为此有明确的命名法吗?我查看了MDN(和Google),却什么也没找到。

1 个答案:

答案 0 :(得分:3)

您看到的称为compound statement

MDN