क्या आप के लिए पूछ रहे हैं एक समारोह है कि आप के लिए कुछ करता है:
function giveMeAFunctionThatBeeps(){
return function() {
alert('Beep!');
}
}
var beeper = giveMeAFunctionThatBeeps();
beeper(); // beeps!
वास्तविक giveMeAFunctionThatbeeps सिर्फ एक कारखाना है कि आप एक समारोह है कि आप क्या चाहते हैं देता है।
उदाहरण वे प्रदान की है में, आप बीपर के रूप में एक ही बात कर रहे हैं लेकिन आप यह भी एक मूल्य में गुजर रहे हैं:
function giveMeAFunctionThatBeepsANumber(x){
return function() {
alert('Beep ' + x);
}
}
यह एक बीपर (यह एक कारखाना याद है) देता है, लेकिन बीपर एक्स का मान अलर्ट करता है।
हालांकि, इस मूल्य जब आप पहली बार बीपर बनाने के लिए निर्धारित है:
var beeper = giveMeAFunctionThatBeeps(5);
beeper(); // beeps 5!
बीपर अब मूल्य 5 beeping फंस गया है, और हम इस बारे में कुछ नहीं कर सकते।
function giveMeAFunctionThatBeepsANumber(){
return function (x) {
alert('Beep ' + x);
}
}
var beeper = giveMeAFunctionThatBeeps();
beeper(6); // beeps 6!
beeper(7); // beeps 7!
के रूप में अब हम हमें एक समारोह हम में एक नंबर प्लग कर देने के लिए कारखाने में पूछ रहे हैं:
अगले उदाहरण आप एक बीपर कि किसी भी संख्या बीप बनाने के लिए चाहते हैं।
फिर अंत में, मूल उदाहरण के लिए, ऊपर के दोनों संयुक्त है:
function giveMeAFunctionThatBeepsANumber(x){
return function (y) {
alert('Beep ' + (x + y));
}
}
var beeper = giveMeAFunctionThatBeeps(2);
जब हम बीपर बनाते हैं तो हम 2 में के रूप में ऊपर याद रखें गुजर रहे हैं, हम इस बाद में परिवर्तित नहीं कर सकता! यह हमेशा बीप 2 होगा ...
...
beeper(6); // beeps 8! because x was set when we created it, and y is what we pass in.
मैं देख रहा हूँ, मेरे मस्तिष्क अभी भी इसे पाने के लिए कोशिश कर रहा है, im बस की कोशिश कर रहा: लेकिन क्योंकि यह एक कारखाना है (मान 2 के साथ पहले से कॉन्फ़िगर) एक समारोह है कि एक पैरामीटर लेता लौटने, हम इसे जब हम इसे चलाने के अनुकूलित कर सकते हैं देखें कि y कैसे पारित किया गया है या सेट किया गया है जब इसका कोई संदर्भ नहीं है क्योंकि मेरे सिर में add10 (3) कहता है कि आपकी सेटिंग एक्स क्यों नहीं ?? यह काफी उलझन में प्रतीत होता है :( – mustafa
नहीं, 'x' कॉल 'मेकएडर (10)' में' 10' पर सेट किया गया है। 'Y' कॉल 'add10 (2)' –
पर '2' पर सेट है लेकिन नहीं होना चाहिए makeAdder (10, 2) वही काम करते हैं? या हम जो अनिवार्य रूप से करते हैं वह हैडर (10)। (2)? आपको लोगों द्वारा बहुत बहुत धन्यवाद :) – mustafa