2012-10-22 8 views
35

मैं सोच रहा था, क्या आप एक पैरामीटर के साथ एक फ़ंक्शन बना सकते हैं जिसे उपेक्षित किया जा सकता है।किसी फ़ंक्शन पर पैरामीटर प्रदान किए जाने पर परीक्षण कैसे करें?

EX। (यह अच्छा कोड नहीं है, लेकिन यह पता चलता है कि मैं क्या चाहता हूँ।)

function parameterTest(test) 
{ 
    if exists(test) 
    { 
    alert('the parameter exists...'); 
    } 
    else 
    { 
    alert('The parameter doesn\'t exist...'); 
    } 
} 

तो अगर आप parameterTest() फोन तो परिणाम संदेश "पैरामीटर मौजूद नहीं है ..." होगा। और यदि आप parameterTest(true) पर कॉल करते हैं तो यह "पैरामीटर मौजूद है ..." वापस आ जाएगा।

क्या कोई मेरी मदद कर सकता है? क्या यह संभव है?

+1

http://www.openjs.com/articles/optional_function_arguments.php – Jrod

+0

एक चर नाम के रूप में 'bool' की पसंद यह काफी polyglots –

+0

को भ्रमित यह एक बहुत पुरानी सवाल यह है कि बनाता है, लेकिन स्पष्ट रूप से दैनिक देखा, इनपुट के लिए धन्यवाद। मैंने इसे और अधिक स्पष्ट करने के लिए मूल पोस्ट संपादित किया। –

उत्तर

54

यह एक बहुत ही लगातार पैटर्न है।

आप का उपयोग

function parameterTest(bool) { 
    if (bool !== undefined) { 

फिर आप उन तरीकों में से एक के साथ अपने समारोह कॉल कर सकते हैं यह परीक्षण कर सकते हैं:

parameterTest(); 
parameterTest(someValue); 

सावधान रहें परीक्षण के लगातार त्रुटि बनाने के लिए नहीं

if (!bool) { 

क्योंकि आपसे एक अप्रत्याशित मान को अलग करने में सक्षम नहीं होंगे 0, 0 या ""। जांच करने के लिए

+2

'टाइपऑफ (बूल)' टाइप टाइप बूल 'होना चाहिए, है ना? – Johan

+0

@Johan बहुत यकीन है कि आप इसे एक फ़ंक्शन और ऑपरेटर के रूप में उपयोग कर सकते हैं। लगता है कि कम से कम – sachleen

+1

क्रोम में काम करना प्रतीत होता है जैसे आप सही हैं :) https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof – Johan

6

जावास्क्रिप्ट में, यदि आप पैरामीटर देने की उपेक्षा करते हैं तो यह undefined पर डिफ़ॉल्ट होगा।

आप अपने ब्राउज़र कंसोल में या JSFiddle का उपयोग करके आसानी से अपने लिए यह कोशिश कर सकते हैं।

आप पैरामीटर के अस्तित्व की जांच कर सकते हैं, जैसा कि आप कहते हैं, और इस तरह एक ऐसा फ़ंक्शन लिखें जो पैरामीटर का उपयोग कर सके या नहीं। हालांकि, JavaScript Garden (एक महान संसाधन) अधिकांश मामलों में typeof से दूर रहने की सिफारिश करता है, क्योंकि इसका उत्पादन केवल बेकार है (results of typeof की तालिका देखें)।

+1

एक विकल्प के रूप में, jquery एक '$ .type' विधि प्रदान करता है जो लगातार ब्राउज़र में काम करता है। –

+1

वह लिंक कहता है कि टाइपऑफ इस स्थिति के लिए केवल उपयोगी है, जो इस प्रश्न के लिए पर्याप्त है। – EralpB

9
function parameterTest(bool) 
{ 
    if(typeof bool !== 'undefined') 
    { 
    alert('the parameter exists...'); 
    } 
    else 
    { 
    alert('The parameter doesn\'t exist...'); 
    } 
} 
1
function parameterTest(p) { 
    if (p === undefined) 
     alert('The parameter doesn\'t exist...'); 
    else 
     alert('the parameter exists...'); 
} 
+0

जावास्क्रिप्ट '=== 'के साथ सबसे अच्छा काम करता है :) – Matteo

4

सबसे अच्छा तरीका है: अगर परमअपरिभाषित

function parameterTest(param) { 
    if (param !== undefined) 
    ... 

परम भी हो सकता है एक चर या एक समारोह नाम

0

मैं नहीं है पता है कि यह पुराना है, लेकिन यह जांचने का मेरा पसंदीदा तरीका है, और डिफ़ॉल्ट v असाइन करें कार्यों के लिए alues:

function testParamFunction(param1, param2) { 
    param1 = typeof param1 === 'undefined' ? null : param1; 
    param2 = typeof param2 === 'undefined' ? 'default' : param2; 

    // exit if the required parameter is not passed 
    if (param1 === null) { 
     console.error('Required parameter was not passed'); 
     return; 
    } 

    // param2 is not mandatory and is assigned a default value so 
    // things continue as long as param1 has a value 
} 
संबंधित मुद्दे

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