2015-12-05 6 views
5

में मुझे यकीन नहीं है कि इस प्रश्न का शीर्षक कैसे कॉल/फ्रेम करें, लेकिन क्या कोई मुझे बता सकता है कि निम्न कोड क्या करता है?फ़ंक्शन()() जावास्क्रिप्ट

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

मैं एप्लिकेशन पारित किया जा रहा के साथ एक second() देख रहा हूँ, कि क्या क्या करता है? https://github.com/couchbaselabs/restful-angularjs-nodejs/blob/master/app.js

मेरे आश्चर्य के लिए, चर मार्गों के ऊपर दिए गए कोड में app.js में उपयोग नहीं किया गया है? उद्देश्य क्या है। मैं यहाँ बहुत उलझन में हूं (app) argument यहां कुछ जादू करते हैं?

+2

(1) routes.js फ़ाइल एक फ़ंक्शन निर्यात करती है, इसलिए इसे तुरंत लागू किया जाता है और परिणाम 'मार्ग' में संग्रहीत होता है। (2) उस कॉल में, 'ऐप' राउटर को पास कर दिया जाता है, इसलिए ऐप वास्तव में राउटर का उपयोग करता है, न कि परिवर्तनीय 'मार्ग' के। –

+0

@ हुनानरोस्टोमैन: ऐप.यूज ("/", की आवश्यकता है ("./ मार्ग")); क्या यह कोड उपरोक्त कोड के बराबर है? – ShankarGuru

+0

यह काम कर सकता है। मुझे यकीन नहीं है। कोशिश करो। –

उत्तर

6

निर्माण

foo()(); 

को उम्मीद है कि foo() एक फ़ंक्शन और तुरंत यह कहता है। यह अधिक पठनीय के बराबर है:

var func = foo(); 
func(); 

ऐसा ही एक निर्माण आप अक्सर देखेंगे:

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

यह एक समारोह को परिभाषित करता है और तुरंत यह कहता है। प्राथमिक उपयोग चर के लिए ब्लॉक स्कोप अनुकरण करना है।

+0

क्या आप foo() (arg) पर मूल उदाहरण के साथ बस एक छोटा सा पहेली कर सकते हैं? – ShankarGuru

संबंधित मुद्दे