函数()()在JavaScript中

我不知道如何调用/框架这个问题标题,但任何人都可以解释我下面的代码做什么?

var routes = require("./routes/routes.js")(app); 

我看到second ()与应用程序被传递,这是做什么? https://github.com/couchbaselabs/restful-angularjs-nodejs/blob/master/app.js

令我吃惊的是,在上面的代码中,variables路由在app.js中并没有被使用? 目的是什么? 我在这里很困惑(app) argument在这里做什么魔术?

构造

 foo()(); 

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

 var func = foo(); func(); 

你会经常看到类似的结构是:

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

这定义了一个函数并立即调用它。 主要用途是模拟variables的块范围。