http://eloquentjavascript.net/1st_edition/chapter6.html में, वहाँ निम्नलिखित उदाहरण है:जावास्क्रिप्ट में फ़ंक्शन पास करते समय पैरामीटर कैसे प्रबंधित किए जाते हैं?
function negate(func) {
return function(x) {
return !func(x);
};
}
var isNotNaN = negate(isNaN);
alert(isNotNaN(NaN));
केवल बुनियादी जावास्क्रिप्ट और जरूरी प्रोग्रामिंग जानने के बाद, मैं इस प्रोग्रामिंग शैली द्वारा स्टम्प्ड रहा हूँ। क्या कोई मुझे समझने में मदद कर सकता है कि रनटाइम के दौरान क्या होता है।
मैंने कोड और निरीक्षण किए गए चर के माध्यम से कदम रखा और पाया कि x
का मान NaN
है। यह कैसे पता चलता है कि isNaN
पर तर्क अज्ञात फ़ंक्शन के तर्क x
के रूप में पारित किया जाना चाहिए? सबसे पहले, isNotNaN
का वास्तविक पैरामीटर NaN क्यों isNaN
(यानी isNaN
को तर्क की अपेक्षा करता है, यह isNotNaN
के तर्क से क्यों लेता है)?
* तीसरी लाइन की वजह से "पहली जगह में, क्यों वास्तविक पैरामीटर' 'की NaN' isNotNaN'' isNaN' को तर्क बन जाता है "*:' समारोह (एक्स) '। 'func' 'isNaN' का संदर्भ है और' x' 'NaN' है। यह किसी भी अन्य कार्य से बहुत अलग नहीं है उदा। 'फ़ंक्शन foo (x) में {वापसी बार (x); }; foo (x) ',' foo' 'bar' के साथ' x' गुजरता है। आपके उदाहरण में एकमात्र अंतर यह है कि 'func' गतिशील रूप से निर्धारित किया जाता है। –
** नोट ** यह फ़ंक्शन 'negate' सही ढंग से केवल उन कार्यों के साथ काम करता है जो केवल एक पैरामीटर – Grundy