提问者:小点点

javascript函数什么时候需要在require语句后面加空括号?


我正在使用module.exports导出函数。 大部分都是这样导入的:

const logger = require('../middleware/logger')

我明白,如果我需要传递一个参数给我将要使用的函数:

const logger = require('../middleware/logger')(arg)

但最近我遇到了一个需要用空括号调用的函数:

require('./startup/db')()

否则将不会建立到数据库的连接。 存在来自“。/startup/db”的代码:

const mongoose = require('mongoose')
mongoose.set('useCreateIndex', true)
const logger = require('../middleware/logger')

module.exports = function () {
   mongoose.connect('mongodb://localhost:27017/data', {
         useNewUrlParser: true,
         useUnifiedTopology: true,
      })
      .then(() => logger.info('Connected to MongoDB'))
}

谁能解释一下当require('module')不起作用而我应该使用require('module')()来代替吗?


共1个答案

匿名用户

这是因为‘。/startup/db'返回的是函数而不是值。 需要调用此函数,否则只存储对该函数的引用。
现在,由于此函数不需要参数,只需调用,因此不向其传递任何值。