परिचय
जावास्क्रिप्ट में सेल्फ-इन्वोकिंग फ़ंक्शन को **इमीडिएटली इनवोक्ड फ़ंक्शन एक्सप्रेशन (IIFE)** के रूप में जाना जाता है। IIFE एक जावास्क्रिप्ट फ़ंक्शन है जो परिभाषित होते ही तुरंत निष्पादित होता है, इसलिए IIFE को मैन्युअली इनवोक करने की आवश्यकता नहीं होती। यह प्राइवेट स्कोप बनाने और ग्लोबल नेमस्पेस प्रदूषण से बचने के लिए उपयोगी है।
उदाहरण
निम्न कोड जावास्क्रिप्ट में सेल्फ-इन्वोकिंग फ़ंक्शन (IIFE) के लिए है:
<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>IIFE उदाहरण</title> <style> body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } .sample { font-size: 18px; font-weight: 500; } </style> </head> </head> <body> <h1>जावास्क्रिप्ट इमीडिएटली इनवोक्ड फ़ंक्शन एक्सप्रेशन्स (IIFE)</h1> <div class="sample"></div> <script> const sampleEle = document.querySelector(".sample"); // IIFE पैटर्न: (function() { ... })() (function () { sampleEle.innerHTML = 'यह कोड परिभाषित होते ही तुरंत इनवोक हो जाता है'; })(); </script> </body> </html>
आउटपुट
उपरोक्त कोड निम्न आउटपुट उत्पन्न करेगा:

IIFE वेरिएशन्स
// मानक IIFE
(function() { /* कोड */ })();
// एरो फ़ंक्शन IIFE (ES6)
(() => { /* कोड */ })();
// पैरामीटर्स के साथ
((name) => { console.log('नमस्ते ' + name); })('रोहन');
// रिटर्न वैल्यू के साथ
const result = (function() { return 42; })();
// अनाम फ़ंक्शन एक्सप्रेशन (पैरेंथेसिस के बिना - सिंटैक्स एरर)
// function() {}() // SyntaxError
उपयोग के मामले
- प्राइवेट स्कोप - ग्लोबल नेमस्पेस को प्रदूषित किए बिना वेरिएबल्स एनकैप्सुलेट करें
- इनिशियलाइज़ेशन कोड - एक बार चलने वाला सेटअप कोड
- मॉड्यूल पैटर्न - पब्लिक API के साथ प्राइवेट स्टेट लौटाएं
- लूप में क्लोजर कैप्चर करना (ES6
letसे पहले)
आधुनिक विकल्प
ES6 मॉड्यूल्स (import/export) अब कोड ऑर्गनाइज़ेशन और एनकैप्सुलेशन के लिए पसंदीदा तरीका है।