जावास्क्रिप्ट में क्लोजर पर काउंटर
आइए हमने जो कोड देखा है उसे फिर से लिखें
ताकि वापसी फ़ंक्शन हर बार
चर num का मान बढ़ा दे
एक से:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // एक जोड़ें
}
}
let func = test();
यह पता चला है कि फ़ंक्शन func का प्रत्येक कॉल
कंसोल में एक नया मान आउटपुट करेगा:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //1 आउटपुट करेगा
func(); //2 आउटपुट करेगा
func(); //3 आउटपुट करेगा
func(); //4 आउटपुट करेगा
func(); //5 आउटपुट करेगा
यह पता चला है कि हमने कॉल काउंटर लागू किया है
फ़ंक्शन, क्लोजर का उपयोग करके (बल्कि उपयोग करके)
चर num हमारे फ़ंक्शन के क्लोजर से)।
ध्यान रखें कि फ़ंक्शन test का प्रत्येक कॉल
एक नया फ़ंक्शन लौटाएगा, जिसमें
इसका अपना क्लोजर होगा। यानी अलग-अलग काउंटर
स्वतंत्र रूप से काम करेगा:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // पहला काउंटर
func1(); //1 आउटपुट करेगा
func1(); //2 आउटपुट करेगा
let func2 = test(); // दूसरा काउंटर
func2(); //1 आउटपुट करेगा
func2(); //2 आउटपुट करेगा
यह पता चला है कि एक ही चर num
विभिन्न कार्यों के लिए अलग-अलग मान होंगे!
यानी अगर हम फ़ंक्शन test को कॉल करते हैं
दो बार, तो इससे प्राप्त कार्य होंगे
स्वतंत्र रूप से काम करते हैं और प्रत्येक
इन कार्यों का अपना स्वतंत्र होगा
चर num।
स्वतंत्र रूप से, मेरे कोड में देखे बिना, फ़ंक्शन कॉल काउंटर लागू करें, काम कर रहा है क्लोजर पर।
चलो क्लोजर में फ़ंक्शन नंबर 10 स्टोर करता है।
इसे ऐसा बनाएं कि फ़ंक्शन का प्रत्येक कॉल
इस संख्या को 1 से कम कर दे और आउटपुट कर दे
कंसोल में घटा हुआ नंबर।
पिछली समस्या को इस प्रकार संशोधित करें कि
उलटी गिनती 0 तक पहुँच जाए, और फिर प्रत्येक
फ़ंक्शन के बाद के कॉल कंसोल में आउटपुट होंगे
एक संदेश कि उलटी गिनती समाप्त हो गई है।