Table of Contents
Introduction
हेलो दोस्तों आज हम इस post में javascript के closure concepts को detail के साथ समझेंगे!.
What is closure in javascript
Javascript program में एक बार function call या execute हो गया तो इस function के variable या उस function के parameter को दुबारा se इस्तेमाल नहीं कर सकते. तो closures के इस्तेमाल से हम function के variable और parameter को access कर सकते है!. closures एक function का combination है जो lexical environment के साथ बना हुवा है!.
दूसरे word में बोले to closures आपको inner function से outer function’s के scope को access करने ki अनुमति देता है!.
javascript में function created होने पर closure created होता है!.
Example:
function outerFunction() { var outerVariable = 'I am outside!'; function innerFunction() { console.log(outerVariable); } return innerFunction; } var closure = outerFunction(); closure(); // यह 'I am outside!' को आउटपुट करेगा
ऊपर के example में outerFunction() एक outer function है जिसमे outerVariable नाम का एक local variable है!. innerFunction() एक innerfunction है जो console.log(outerVariable) को output करता है!. outerFunction ने innerfunction को return किया है जिसे हम closures name के variable में store करते है!.
जब हम closure() function को call करते है तो यह innerFunction को execute करता है और उसमे outerFunction के outerVariable को access करने की अनुमति देता है!.
इस तरह closure outerVariable को एक reference के रूप में रखता है और ऐसे innerFunction में इस्तेमाल कर सकते है!. closures एक बहुत ही important और usefull concepts है जिसे app javascript में ज्यादा तर रूप से इस्तेमाल कर सकते है!.
Lexical scoping
Example:
function init() { var name = "Mozilla"; // name is a local variable created by init function displayName() { // displayName() is the inner function, that forms the closure console.log(name); // use variable declared in the parent function } displayName(); } init();
ऊपर के example में init() function नाम name का एक local variable created करा है और displayName() का function बनाया है. displayName() function एक inner function है जिसे init() function के अंदर defined किया गया है और केवल init() function के body में availabel है!. Note करे की displayName() function का किसी बी प्रकार का local variable नहीं है फिरभी inner function outer function के variable को access और इस्तेमाल कर सकते है!. इस लिए displayName() function parent init() function के declared variable name को access और इस्तेमाल कर सकते है!.