जावास्क्रिप्ट में क्लोजर के माध्यम से मॉड्यूल में पैरामीटर पास करना
यह एक अच्छा अभ्यास माना जाता है कि मॉड्यूल में किसी भी मान को हार्डकोड न करें, बल्कि उन्हें मॉड्यूल के पैरामीटर के रूप में पास करें (यानी, तुरंत लागू होने वाले फंक्शन के पैरामीटर के रूप में):
;(function(arg1, arg2) { // पैरामीटर वेरिएबल में चले जाते हैं
})(1, 2); // कुछ पैरामीटर पास करते हैं
आइए एक उदाहरण देखें। मान लीजिए कि हमारे पास एक संख्या वाला एक div और एक बटन है:
<div id="div">3</div>
<button id="btn">click me</button>
मान लीजिए कि हमारे पास एक मॉड्यूल भी है:
;(function() {
let div = document.querySelector('#div');
let btn = document.querySelector('#btn');
function func(num) {
return num * num;
}
btn.addEventListener('click', function() {
div.textContent = func(div.textContent);
});
})();
जैसा कि आप देख सकते हैं, हमारे एलिमेंट्स के सेलेक्टर मॉड्यूल के कोड में हार्डकोडेड हैं। एक बेहतर समाधान होगा कि उन्हें मॉड्यूल के पैरामीटर के रूप में पास किया जाए - इस तरह भविष्य में हम उन्हें आसानी से बदल सकेंगे। आइए अपने मॉड्यूल को सही करें:
;(function(selector1, selector2) {
let div = document.querySelector(selector1);
let btn = document.querySelector(selector2);
function func(num) {
return num * num;
}
btn.addEventListener('click', function() {
div.textContent = func(div.textContent);
});
})('#div', '#btn');
एक बटन और तीन इनपुट दिए गए हैं, जिनमें नंबर दर्ज किए जाते हैं। बटन दबाने पर, दर्ज किए गए नंबरों का योग कंसोल में प्रिंट करें। इस कार्य को मॉड्यूल का उपयोग करके लागू करें।