2015-12-05 24 views
5

この質問のタイトルを呼び出す方法はわかりませんが、以下のコードは何を説明できますか?javascriptのfunction()()

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

私はアプリが渡されているのを見ていますが、それは何ですか? https://github.com/couchbaselabs/restful-angularjs-nodejs/blob/master/app.js

私の驚いたことに、上記のコードでは、変数ルートはapp.jsではまったく使用されていませんか?目的は何ですか?私はここでかなり混乱しています(app) argumentここで何か魔法をしますか?

+2

(1)routes.jsファイルは関数をエクスポートし、即座に呼び出され、結果は 'routes'に格納されます。 (2)その呼び出しでは、 'app'がルータに渡されるので、appは実際には' routes'変数ではなく単にルータを利用します。 –

+0

@HunanRostomyan:app.use( "/"、require( "./ routes"));上記のコードと同等のコードですか? – ShankarGuru

+0

それはうまくいくかもしれません。よく分かりません。試してみる。 –

答えて

6

構造

foo()(); 

foo()は関数を返すと、すぐにそれを呼び出すことを期待しています。これは、より読みやすいと同等です:

var func = foo(); 
func(); 

あなたが頻繁に表示されます同様の構文は次のとおりです。

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

これは、関数を定義し、それをすぐに呼び出します。主な用途は、変数のブロックスコープをエミュレートすることです。

+0

foo()(arg)の基本的な例を使って小さなフィドルを行うことはできますか? – ShankarGuru