2009-12-17 20 views
20

के समान तर्कों की सरणी पास करें, मैं निर्धारित करना चाहता हूं कि मैन्युअल रूप से, बिना टाइमआउट के क्या सेट करता है।जावास्क्रिप्ट: कॉल फ़ंक्शन, सेट टिमआउट() की कार्यक्षमता

setTimeout(function,0,args); 

बस एक फ़ंक्शन को कॉल करें और तर्कों की एक सरणी पास करें, यह जानने के बिना कि कितने तर्क थे।

असल में मैं किसी अन्य फ़ंक्शन के माध्यम से फ़ंक्शन कॉल को प्रॉक्सी करना चाहता हूं।

मैं शब्दावली के साथ बुरा हूं, क्षमा करें।

+1

यह भी देखें: http://stackoverflow.com/questions/1881905/call-function-with-multiple-arguments – CMS

+0

@ Michał Perłakowski यह सुनिश्चित नहीं करता कि यह आपके द्वारा जोड़े गए लिंक द्वारा डुप्लिकेट (पहले से उत्तर दिया गया) कैसे है पूछा गया और पहले जवाब दिया? शायद आप बस "यहां प्रश्न साफ़ कर रहे हैं" कह रहे हैं? – somedev

+0

@somedev अन्य प्रश्न में बेहतर उत्तर हैं, देखें [क्या मुझे एक प्रश्न को डुप्लिकेट के रूप में चिह्नित करना चाहिए यदि उसे बेहतर उत्तर मिल गए हैं?] (Https://meta.stackoverflow.com/q/251938/3853934) –

उत्तर

43
function f(a, b, c) { return a + b + c; } 
alert(f.apply(f, ['hello', ' ', 'world'])); 
0

लगता है जैसे आप एक तर्क के रूप में परिवर्तनीय तर्क के साथ एक समारोह चाहते हैं। ऐसा करने का सबसे अच्छा तरीका या तो सामान्य रूप से एक स्पष्ट ऐरे या ऑब्जेक्ट है।

myFunction(callbackFunction, count, arrayOfOptions); 

myFunction(callbackFunction, count, objectOfOptions); 
0

जावास्क्रिप्ट का arguments चर पर एक नजर डालें। यह फ़ंक्शन में पास किए गए सभी तर्कों की एक सरणी है।

f = function() { 
    for (arg in arguments) { 
     // do stuff 
    } 
} 

फिर, सही तर्क के साथ एक नया कार्य बनाएँ::

तो आप अपने मुख्य कार्य इस तरह बना सकते हैं

f2 = function() { 
    return f(arg1, arg2, arg3 /* etc. */); 
} 

और setTimeout को यह समारोह पारित:

setTimeout(f2, 0); 
7

ES6 में:

function myFunc(a, b, c){ 
    console.log(a, b, c); 
} 

var args = [1, 2, 3]; 
myFunc(...args); 
+0

इसके लिए धन्यवाद! मैं <3 ईएस 6। – hartz89

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