【问题标题】:function ()() in javascriptjavascript中的函数()()
【发布时间】:2015-12-05 18:02:49
【问题描述】:

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

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

我看到一个second () 应用程序正在通过,这是做什么的? https://github.com/couchbaselabs/restful-angularjs-nodejs/blob/master/app.js

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

【问题讨论】:

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

标签: javascript node.js


【解决方案1】:

结构

foo()();

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

var func = foo();
func();

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

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

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

【讨论】:

  • 你能用一个关于 foo()(arg) 的基本例子来做一个小技巧吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 2019-02-24
相关资源
最近更新 更多