Function as Values in JavaScript – चूंकि ECMAScript में Functions के नाम एक Variable से ज्यादा कुछ नहीं होते, इसलिए ECMAScript में हम किसी Function को किसी भी ऐसी जगह पर Use कर सकते हैं, जहां पर किसी Value या Variable को Use किया जा सकता है।
इसका मतलब ये भी है कि हम ECMAScript Functions को हम न केवल किसी दूसरे Function में Argument की तरह Pass कर सकते हैं, बल्कि किसी Function से Return Value की तरह Return भी करवा सकते हैं। इस Concept को समझने के लिए निम्न उदाहरण Code Segment देखते हैं:
[code] function callSomeFunction(someFunction, someArgument){ return someFunction(someArgument); } [/code]
ये Function दो Arguments Accept करता है। पहला Argument एक Function होना चाहिए, जबकि दूसरा Argument एक Value होना चाहिए, जिसे Function में पहले Argument के रूप में Specified Function के Parameters के रूप में Pass किया जाना है। फिर हम किसी भी Function को निम्नानुसार इस Function में Pass कर सकते हैं:
[code] function add10(num){ return num + 10; } var result1 = callSomeFunction(add10, 10); alert(result1); //Output: 20 function getGreeting(name){ return “Hello, “ + name; } var result2 = callSomeFunction(getGreeting, “Kuldeep”); alert(result2); //Output: Hello, Kuldeep [/code]
जैसाकि उपरोक्त Code में हम देख सकते हैं कि callSomeFunction() एक Generic Function है, इसलिए इस बात से कोई फर्क नहीं पडता कि किस Function को First Argument के रूप में Pass किया गया है, क्योंकि Result हमेंशा Execute होने वाले First Function से Return होता है।
मुख्य रूप से ध्यान रखने वाली बात ये है कि जब हम केवल किसी Function के Pointer को Access करना चाहते हैं, उसे Run करना नहीं चाहते, तब हमे उस Function Pointer के नाम के साथ Parenthesis का प्रयोग नहीं करना चाहिए। क्योंकि यदि हमने Function के Pointer के साथ Parenthesis का प्रयोग कर दिया] तो Function Run हो जाएगा और Function से Return होने वाली Value, Argument के रूप में Pass होगी।
इसीलिए हमने callSomeFunction(add10, 10);Statement में add10 Function के साथ Parenthesis का प्रयोग नहीं किया है। परिणामस्वरूप add10 Function, callSomeFunction में First Argument की तरह Pass होता है न कि add10 Function के Run होने के बाद Function से Return होने वाला Result, First Argument की तरह Pass हो रहा है जबकि दूसरे Argument के रूप में हमने मान 10 Pass किया है, जो कि add10() Function में Parameter के रूप में Pass होता है।
किसी Function से Value के रूप में किसी Function को Return करना भी सम्भव है और ये प्रक्रिया कई स्थानों पर काफी उपयोगी भी साबित होती है। उदाहरण के लिए मानलो कि हमारे पास Objects का एक Array है और हम इस Array को किसी Object की किसी Specific Property के According Sort करना चाहते हैं।
इस स्थिति में एक Comparison Function इस Array के sort() Method के लिए केवल दो Arguments Accept करता है, जो कि वे Values होती हैं, जिन्हें आपस में Compare करना है।
लेकिन हमें वास्तव में एक ऐसे तरीके की जरूरत है जो इस बात को Indicate करे कि हमें किसी Object की किस Property के According Sorting करनी है। इस समस्या को Solve करने के लिए हम एक Comparison Function Create कर सकते हैं, जो कि किसी Object की किसी Property Name पर आधारित होता है। जैसे-
[code] function createComPairsonFunction(propertyName) { return function(object1, object2){ var value1 = object1[propertyName]; var value2 = object2[propertyName]; if (value1 < value2){ return -1; } else if (value1 > value2){ return 1; } else { return 0; } }; } [/code]
इस Function का Syntax थोडा Complicated महसूस हो सकता है, लेकिन ये Function वास्तव में Nested Function का उदाहरण है। यानी createComPairsonFunction() में हमने एक Anonymous Function को Nest किया है।
Anonymous Function एक ऐसा Function होता है, जिसका कोई नाम नहीं होता। ये Anonymous Function createComparisonFunction() से Value के रूप में Return होता है।
propertyName Argument Inner Function द्वारा Accessible है और इसे Bracket Notation का प्रयोग करके Specify की गई Property को Retrieve करने के लिए Use किया गया है। इस Function द्वारा जब एक बार Property Values Retrieve हो जाती हैं, उस पर एक Simple सा Comparison Perform होता है। इस Function को निम्नानुसार Use किया जा सकता है:
[code] var data = [{name: “Mishra”, age: 28}, {name: “Kuldeep”, age: 29}]; data.sort(createComPairsonFunction(“name”)); alert(data[0].name); //Output: Kuldeep data.sort(createComPairsonFunction(“age”)); alert(data[0].name); //Output: Mishra [/code]
इस Code में data नाम का एक Array Create किया गया है, जिसमें दो Object Elements हैं। दोनों Object की एक name व एक age Property है। By Default रूप से sort() Method toString() Method को हर Object के लिए Call करके Sorting Order को तय करेगा जिससे हमें वह Result प्राप्त नहीं होगा जो हम चाहते हैं।
इसलिए sort() Method में हम createComparisonFunction(“name”); Method को Call करते हैं, जो कि दोनों Objects की name Property की Values को Compare करते हुए Sorting करता है। जिससे Array का First Item name “Kuldeep” व age 29 हो जाता है, क्योंकि Kuldeep का “K”, Mishra के “M” से पहले आता है।
इसी तरह से जब createComparisonFunction(“age”); Execute होता है, तब ये Function age Property के आधार पर Objects की Sorting करता है और Array का First Item name “Mishra” व age 28 हो जाता है क्योंकि 28, 29 से पहले आता है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance JavaScript in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance JavaScript in Hindi | Page: 669 | Format: PDF