सेल्फ-एक्जीक्यूटिंग फंक्शन (IIFE)
सेल्फ-एक्जीक्यूटिंग फंक्शन जिसे IIFE (Immediately Invoked Function Expression) भी कहते हैं, वह फंक्शन है जो परिभाषित होते ही तुरंत 실행 होता है।
उद्देश्य
- स्कोप आइसोलेशन: अंदर डिक्लेयर किए गए वैरिएबल्स केवल IIFE के अंदर उपलब्ध होते हैं, ग्लोबल स्कोप को प्रदूषित नहीं करते
- नेमस्पेसिंग: कोड को मॉड्यूलर बनाता है
- प्राइवेट स्कोप: डेटा एनकैप्सुलेशन
- इनिशियलाइज़ेशन: वन-टाइम सेटअप कोड
सिंटैक्स
// मानक (अनुशंसित)
(function() { })();
// वैकल्पिक - पैरेंथेसिस बाहर
(function() { }());
// यूनरी ऑपरेटर्स के साथ (कम आम)
!function() { }();
+function() { }();
~function() { }();
-function() { }();
// एरो फंक्शन IIFE (ES6+)
(() => { })();
// पैरामीटर्स पास करना
(function(name) {
console.log("Hello " + name);
})("Amit");
व्यावहारिक उदाहरण
1. ग्लोबल स्कोप प्रदूषण रोकना
// समस्या: सभी 5 प्रिंट करते हैं
for (var i = 0; i < 5; i++) {
setTimeout(function() { console.log(i); }, 100);
}
// IIFE समाधान
for (var i = 0; i < 5; i++) {
(function(index) {
setTimeout(function() { console.log(index); }, 100);
})(i);
}
// या let उपयोग करें (ES6+)
for (let i = 0; i < 5; i++) {
setTimeout(function() { console.log(i); }, 100);
}
3. मॉड्यूल पैटर्न
आधुनिक विकल्प: ES6 मॉड्यूल्स
नोट: ES6 मॉड्यूल्स (
import/export) अब IIFE के अधिकांश उपयोग मामलों को बदल देते हैं, लेकिन IIFE अभी भी लीगेसी कोड और विशिष्ट पैटर्न्स में उपयोगी है।