संभव डुप्लिकेट:
How do JavaScript closures work?इस तरह से अज्ञात कार्यों के लिए तर्क पारित करने का उद्देश्य क्या है?
मैं Google Closure Compiler के साथ चारों ओर खेल रहा था, यादृच्छिक कोड में डाल यह क्या करेंगे देखने के लिए।
यह मेरी कार्यों में से एक दुबारा लिखा कुछ इस तरह देखने के लिए:
(function(msg) { console.log(msg); })("Hello World!");
यह प्रतीत होता है कि कहाँ "Hello World"
तर्क अज्ञात फ़ंक्शन यह पूर्ववर्ती करने के लिए msg
के रूप में पारित है। मैं एक पल के लिए इसे देख रहा था, और सोचा था कि मैं jQuery प्लगइन्स में कुछ इसी तरह है कि कुछ इस तरह दिखाई देखा था:
(function($) {
...
})(jQuery);
कौन सा अब मेरे लिए और अधिक समझ में आता है, $
के साथ संघर्ष के दायरे में। लेकिन इस तरह के किसी अज्ञात फ़ंक्शन में तर्क पारित करने का प्राथमिक कारण या उद्देश्य क्या है? फ़ंक्शन के भीतर वे चर के रूप में तर्कों को परिभाषित क्यों नहीं करेंगे? क्या इस तरह के कार्यों को लिखने के लिए कोई प्रदर्शन या लचीलापन लाभ है?
कि विशिष्ट कोड के लिए, वहाँ कोई वास्तविक कारण नहीं है। आप बस 'console.log ("हैलो") कर सकते हैं; '। लेकिन आम तौर पर यह कुछ स्थानीय चर बनाने के लिए होता है जो केवल कुछ कार्यों के लिए सुलभ होते हैं जो अंदर और निर्यात किए जाते हैं। –
मैं आपके मूल कोड को देखने के लिए उत्सुक हूं जिसके परिणामस्वरूप वह फॉर्म होगा। यदि आपके पास ADVANCED_OPTIMIZATIONS सक्षम है, तो मैं शर्त लगाऊंगा, यह पूरी तरह से फ़ंक्शन से छुटकारा पायेगा। –
@ user1689607 फ़ंक्शन थोड़ा अलग और लंबा तरीका था।मैंने इसे SO पर साफ करने के लिए संक्षिप्त किया। इस विशिष्ट उदाहरण –