Function Arguments

Function Arguments in JavaScript – जिस तरह से Function Arguments अन्‍य Programming Languages में Behave करते हैं, Exactly उसी तरह से Arguments ECMAScript में काम नहीं करते। एक ECMAScript Function में हम जितने चाहें उतने Arguments Pass कर सकते हैं और जिस Data Type का चाहें उस Data Type का Argument Pass कर सकते हैं। हमें Arguments के Data Types व Arguments की संख्‍या के बारे में सोंचने की जरूरत नहीं होती है।

यानी यदि हम किसी Function को केवल दो Arguments Specify करते हुए Define करते हैं, तो इसका मतलब ये नहीं है कि वह Function केवल दो ही Arguments Accept करेगा। हम चाहें तो उस Function में हम तीन Arguments भी Pass कर सकते हैं, पांच Arguments भी Pass कर सकते हैं और यदि हम न चाहें, तो एक भी Argument Pass करने की जरूरत नहीं है, फिर भी Function Call होगा और बिना किसी परेशानी या Error के Execute होगा।

ECMAScript में Function के सभी Arguments एक Internal Array में Store होते हैं, जिसका नाम arguments होता है और Function में Arguments इस arguments Array के Through Pass होते हैं। इसलिए Array में भले एक Argument हो या दस Argument अथवा भले एक भी Argument न हो, Function को अपना काम करने में कोई परेशानी नहीं होती और Function Normal तरीके से Call व Execute होता है।

वास्तव में ये Array एक प्रकार का arguments Object होता है, जिसे किसी Function के अन्दर Function के विभिन्न Arguments को Retrieve करने के लिए Use किया जा सकता है।

arguments Object एक प्रकार के Array की तरह व्यवहार करता है हालांकि ये Array का Instance नहीं होता और हम इस Object के प्रत्येक argument को Bracket Notation का प्रयोग करके Access कर सकते हैं जहां पहले Argument को Access करने के लिए हमें arguments[0] Notation Use करना होता है, जबकि दसवें Argument को Access करने के लिए arguments[9] को।

किसी Function में कुल कितने Arguments Pass किए गए हैं, इस बात का पता लगाने के लिए हम इस arguments Object की length Property को Use कर सकते हैं।

पिछले उदाहरण में हमने NameMessage Arguments को उनके नाम namemessage से Access किया था। उसी Function को हम निम्नानुसार भी Define कर सकते हैं, जिसमें हमने कोई Argument Specify नहीं किया है, फिर भी Function को Call करते समय इस Function में Arguments Pass कर सकते हैं और उन Arguments को इस Function में arguments Object द्वारा Access भी कर सकते हैं:

[code]
function sayHi(){
    alert("Hello " + arguments[0] + "," + arguments[1]);
}
[/code]

हालांकि उपरोक्त Function में हमने कोई Argument Specify नहीं किया है, फिर भी ये Function ठीक पहले वाले Function की तरह ही काम करता है। यानी JavaScript में Function के Arguments के नाम को Specify करना हमारी सुविधा के लिए ठीक रहता है लेकिन इन नामों को Define करना जरूरी नहीं होता।

यानी विभिन्न अन्‍य Programming Languages की तरह JavaScript में Function का नाम व Arguments Function का Signature नहीं बनाते, जिनका बाद में Calling के समय Exactly Match होना जरूरी होता है।

इसीलिए हम JavaScript Functions में बिना किसी परेशानी के Default ArgumentsFunction Overloading की सुविधा प्राप्त कर लेते हैं, जिसे प्राप्त करने के लिए हमें C++ व Java जैसी Programming Language में काफी Coding करनी पडती है व काफी Strict Rules Follow करने पडते हैं।

किसी Function में कुल कितने Arguments Pass किए गए हैं, इसका पता लगाने के लिए हम arguments Object की length Property को निम्नानुसार Use कर सकते हैं:

[code]
function howManyArgs() {
      alert(arguments.length);
}

howManyArgs(“string”, 45);      //Output: 2
howManyArgs();                  //Output: 0
howManyArgs(12);                //Output: 1
[/code]

इस तरह से JavaScript हमें किसी Function में जितने चाहें उतने Arguments Pass करने की सुविधा देता है साथ ही बिना किसी परेशानी के कितने भी Arguments Specify करने पर भी Function समान प्रकार से काम करता है।

arguments Object को हम Named Arguments के साथ भी उपयोग में ले सकते हैं। जैसे-

[code]
function doAdd(num1, num2) {
      if(arguments.length == 1) {
            alert(num1 + 10);
      } else if (arguments.length == 2) {
            alert(arguments[0] + num2);
      }
}
[/code]

उपरोक्त उदाहरण Code में आप देख सकते हैं कि हमने उपरोक्त Function में arguments Object व Named Arguments num1num2 दोनों को एक साथ Use किया है। JavaScript में हम ऐसा कर सकते हैं।

Arguments के बारे में एक और महत्वपूर्ण बात ये है कि जब हम किसी Function में Named Argument Specify करते हैं लेकिन Function को Call करते समय सभी Arguments में Value Pass नहीं करते, तब जिन Arguments के लिए Value Pass नहीं होता, उन Arguments में Automatically undefined मान Set हो जाता है।

उदाहरण के लिए यदि हम उपरोक्त Function को निम्नानुसार Call करें और केवल एक ही Argument Pass करें, तो दूसरा Argument num2 को कोई मान Pass न होने की स्थिति में इसमें undefined मान Store हो जाएगा-

[code]
doAdd(10)            // Output: 20 
[/code]

ECMAScript में सभी Arguments By Value ही Pass होते हैं और किसी भी तरीके से हम किसी भी मान को Function में By Reference Pass नहीं कर सकते।

Advavnce JavaScript in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Advance JavaScript in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Advance JavaScript in Hindi | Page: 669 | Format: PDF

BUY NOW GET DEMO REVIEWS