एससीमैस्क्रिप्ट क्लोजर
- पिछला पृष्ठ फ़ंक्शन ऑब्जेक्ट
- अगला पृष्ठ ओब्जेक्ट ओरिएंटेड
एससीमैस्क्रिप्ट का सबसे मिसफसल बिंदु यह है कि यह क्लोजर (closure) समर्थित करता है।
बंद फ़ंक्शन, असंगणित वेरियेबल को शामिल करने वाले फ़ंक्शन के लेकिका प्रदर्शन को कहते हैं, अर्थात, फ़ंक्शन बाहरी फ़ंक्शन के बाहर परिभाषित वेरियेबल को उपयोग कर सकते हैं।
साधारण बंद फ़ंक्शन का उदाहरण
ECMAScript में ग्लोबल वेरियेबल का उपयोग एक साधारण बंद फ़ंक्शन का उदाहरण है। नीचे दिए गए शब्दांतरण पर विचार करें:
var sMessage = "hello world"; function sayHelloWorld() { alert(sMessage); } sayHelloWorld();
इस शब्दांतरण में, स्क्रिप्ट को मेमोरी में लोड करने के बाद, फ़ंक्शन sayHelloWorld() के लिए वेरियेबल sMessage का मान नहीं गणना किया गया है। फ़ंक्शन sayHelloWorld() की स्वाभाविकता के लिए sMessage का मान केवल भविष्य के उपयोग के लिए पकड़ा गया है, अर्थात, व्याख्याकार जानता है कि फ़ंक्शन को बुलाते समय sMessage का मान जांच करना है। sMessage का मान sayHelloWorld() फ़ंक्शन को बुलाते समय (अंतिम पंक्ति) आबंटित किया जाएगा, "hello world" संदेश दिखाएगा。
जटिल बंद फ़ंक्शन का उदाहरण
एक फ़ंक्शन में दूसरे को परिभाषित करने से बंद फ़ंक्शन जटिल होता है। उदाहरण के लिए:
var iBaseNum = 10; function addNum(iNum1, iNum2) { function doAdd() { return iNum1 + iNum2 + iBaseNum; } return doAdd(); }
यहाँ, addNum() फ़ंक्शन doAdd() (बंद फ़ंक्शन) शामिल करता है। आंतरिक फ़ंक्शन एक बंद फ़ंक्शन है क्योंकि यह बाहरी फ़ंक्शन के पारामीटर iNum1 और iNum2 और ग्लोबल वेरियेबल iBaseNum के मान को प्राप्त करता है। addNum() के अंतिम कदम में doAdd() को दो पारामीटर और ग्लोबल वेरियेबल को जोड़कर उनका योगांकन और उनका योगांकन वापस करता है。
यहाँ पर महत्वपूर्ण संकल्पना है कि doAdd() फ़ंक्शन कोई पारामीटर नहीं लेता है, वह उपयोग करने वाला मान उद्घाटन पर्यावरण से प्राप्त करता है。
देखा जाता है कि बंद फ़ंक्शन ECMAScript में बहुत ही मजबूत और व्यापक एक भाग है, जिसका उपयोग जटिल गणना करने के लिए किया जा सकता है。
सूचना:बंद फ़ंक्शन का उपयोग करते समान, बंद फ़ंक्शन को सावधानी से उपयोग करें क्योंकि वे बहुत ही जटिल हो सकते हैं。
- पिछला पृष्ठ फ़ंक्शन ऑब्जेक्ट
- अगला पृष्ठ ओब्जेक्ट ओरिएंटेड