मैं एक बंद के भीतर दोनों कार्यों को जगह देने के लिए, एक तीसरे रास्ते का प्रस्ताव करने जा रहा हूं। ऐसा लगेगा:
var functionA = (function(){
function functionB() {
// do stuff...
}
function functionA() {
// do stuff...
functionB();
// do stuff...
}
return functionA;
})();
हम एक IIFE में दोनों कार्यों की घोषणा को लपेटकर बंद का निर्माण करते हैं । IIFE का रिटर्न मान सार्वजनिक फ़ंक्शन है, जो फ़ंक्शन के लिए नाम के एक चर में संग्रहीत है। सार्वजनिक समारोह को ठीक उसी तरह से लागू किया जा सकता है जैसे कि इसे एक वैश्विक कार्य के रूप में घोषित किया गया था functionA()। ध्यान दें कि रिटर्न वैल्यू फ़ंक्शन है , फ़ंक्शन के लिए कॉल नहीं है, इस प्रकार अंत में कोई भी पैरेंस नहीं है।
दो कार्यों को इस तरह लपेटकर, functionB अब पूरी तरह से निजी है, और इसे बंद होने से बाहर नहीं पहुँचा जा सकता है, लेकिन केवल दिखाई देता है functionA। यह वैश्विक नाम स्थान को अव्यवस्थित नहीं कर रहा है , और परिभाषा की अव्यवस्था नहीं कर रहा है functionA।