2010-03-26 7 views
19

मैं एक समारोहजावास्क्रिप्ट - क्या कार्य घोषित करने से अधिक तर्क पारित करना बुरा है?

function callback(obj){...} 

यह तुलना में समारोह हस्ताक्षर में घोषित किया गया अधिक वस्तुओं में पारित करने के लिए ठीक है? उदाहरण के लिए, इसे इस तरह कहते हैं:

callback(theObject, extraParam); 

मैं इसे फ़ायरफ़ॉक्स पर बाहर की कोशिश की और यह एक समस्या है नहीं लगता था, लेकिन यह यह करने के लिए बुरा है?

उत्तर

32

जावास्क्रिप्ट यह अनुमति देता है, आप किसी फ़ंक्शन में तर्क के किसी भी मनमाना संख्या को पारित कर सकते हैं।

वे arguments वस्तु जो एक सरणी जैसी वस्तु सांख्यिक गुण तर्क है कि जब समारोह लागू किया गया था इस्तेमाल किया गया, एक length संपत्ति है कि है कि कितने तर्क पर इस्तेमाल किया गया है के मूल्यों से युक्त है कि में उपलब्ध हैं मंगलाचरण भी है, और एक callee संपत्ति जो समारोह में ही लिए एक संदर्भ है, उदाहरण के लिए आप लिख सकते हैं:

function sum(/*arg1, arg2, ... , argN */) { // no arguments defined 
    var i, result = 0; 
    for (i = 0; i < arguments.length; i++) { 
    result += arguments[i]; 
    } 
    return result; 
} 
sum(1, 2, 3, 4); // 10 

arguments वस्तु एक सरणी की तरह लग सकता है लेकिन यह एक सादे वस्तु, कि Object.prototype से विरासत है , लेकिन यदि आप उस पर ऐरे विधियों का उपयोग करना चाहते हैं, तो आप उन्हें सीधेसे आवेदक कर सकते हैं ,

function test() { 
    var args = Array.prototype.slice.call(arguments); 
    return args.join(" "); 
} 
test("hello", "world"); // "hello world" 

इसके अलावा, आप पता कर सकते हैं कि कितने तर्क एक समारोह उम्मीद की length संपत्ति का उपयोग कर:, उदाहरण के लिए, एक आम पैटर्न एक वास्तविक सरणी सरणी slice विधि का उपयोग करने के लिए है पाने के लिए समारोह वस्तु:

function test (one, two, three) { 
    // ... 
} 
test.length; // 3 
+0

आप कॉल कर सकते हैं है 'test.lengt एच 'फ़ंक्शन के भीतर यह जांचने के लिए कि उपयोगकर्ता कितने तर्क इनपुट करता है? –

+0

या '[] .slice.call (तर्क) का उपयोग कर सकते हैं;' – Mahi

4

हाँ, यह करते हैं - अपने अच्छे व्यवहार और एक शक्तिशाली जावास्क्रिप्ट सुविधा

संबंधित मुद्दे

 संबंधित मुद्दे