javascript中的函数()

javascript中的函数(),javascript,node.js,Javascript,Node.js,我不知道如何调用/框这个问题的标题,但有人能解释我下面的代码做什么 var routes = require("./routes/routes.js")(app); 我看到一个second()的应用程序正在被传递,这是做什么的? 令我惊讶的是,在上面的代码中,变量路由根本没有在app.js中使用?目的是什么。我很困惑,(app)参数在这里有什么神奇的作用吗?构造 foo()(); 期望foo()返回一个函数并立即调用它。它相当于更具可读性的: var func = foo(); func(

我不知道如何调用/框这个问题的标题,但有人能解释我下面的代码做什么

var routes = require("./routes/routes.js")(app);
我看到一个
second()
的应用程序正在被传递,这是做什么的?

令我惊讶的是,在上面的代码中,变量路由根本没有在app.js中使用?目的是什么。我很困惑,
(app)参数在这里有什么神奇的作用吗?

构造

foo()();
期望
foo()
返回一个函数并立即调用它。它相当于更具可读性的:

var func = foo();
func();
您经常看到的一个类似结构是:

(function() {
    // function definition
})(args);

这定义了一个函数并立即调用它。主要用途是模拟变量的块作用域。

(1)routes.js文件导出一个函数,以便立即调用该函数,并将结果存储在
routes
中。(2) 在该调用中,
app
被传递到路由器,因此app实际上使用了路由器,而不是变量
routes
@HunanRostomyan:app.use(“/”,require(“./routes”);这个代码和上面的代码等效吗?这可能会起作用。我不确定。试试看。@HunanRostomyan:行得通,我的问题和上面的代码一样吗?在上面我没有指定任何路径,但在这里我使用“/”,这就是我的响应。让我怀疑这不会起作用的是异步路由的设置方式。你给你的应用程序添加了一些东西。现在,如果设置了
app.use
,将
app
的副本传递给它的第二个路由器参数,那么我认为这可能也会起作用。你能稍微修改一下foo()(arg)上的一个基本示例吗?