2011-09-26 14 views
23

मैं एक स्थिर नामित समारोह जब बुलाया कॉल अपनी वेबसाइट पर एक स्क्रिप्ट को रोकने के लिए मौजूद रहने पर:निर्धारित स्थिर नामित JavaScript फ़ंक्शन त्रुटियों

childLoad(); 

childLoad() समारोह हमेशा से परिभाषित नहीं है, हालांकि यह हमेशा कहा जाता है । यदि स्क्रिप्ट मौजूद नहीं है तो मैं इस फ़ंक्शन को कॉल करने से स्क्रिप्ट को कैसे रोक सकता हूं?

+1

संभव डुप्लिकेट [एक वस्तु/समारोह मौजूद है?] (Http://stackoverflow.com/questions/5848700/does-an-object-function-exists) –

+0

@AndreasNiedermair नहीं है, तकनीकी रूप से प्रत्येक प्रश्न है एक ही सामान्य परिदृश्य हालांकि संदर्भ यह है कि यह प्रश्न एक * स्थिर * नामित फ़ंक्शन के संबंध में है जो आपके द्वारा संदर्भित प्रश्न के दौरान कभी भी बदलता नहीं है * गतिशील रूप से * नामित फ़ंक्शन के बारे में पूछताछ कर रहा था। – John

उत्तर

11

आप शॉर्ट सर्किट मूल्यांकन इस्तेमाल कर सकते हैं:,

childLoad && childLoad(); 


संपादित करें यकीन है कि यह अपरिभाषित नहीं है बनाता है

('childLoad' in this) && childLoad && childLoad(); 

यह सुनिश्चित childLoad संदर्भित किया जा सकता कर देगा, तो फ़ंक्शन को कॉल करें। यह सुनिश्चित करने के लिए जांच नहीं करता कि यह एक कार्य है, लेकिन मुझे व्यक्तिगत रूप से लगता है कि इसकी आवश्यकता नहीं है।

नोट: this यदि आप call या apply का उपयोग कर रहे हैं तो संदर्भ का संदर्भ नहीं हो सकता है। यह वास्तव में आपके शेष कोड पर निर्भर करता है।

+6

अच्छा और छोटा, लेकिन अगर असफल हो, तो बच्चे के लोड नामक एक चर (लेकिन बाल लोड नामक फ़ंक्शन नहीं) विफल हो जाएगा। –

+2

ठीक है, यदि 'childLoad' ** परिभाषित नहीं है ** (जैसे यह पहले से घोषित नहीं किया गया था), इस के बाद से पहचानकर्ता गुंजाइश श्रृंखला पर मौजूद नहीं है, एक' ReferenceError' का उत्पादन करेगा ... – CMS

+0

@JacobM, 100% सच होगा, यह एक समारोह के रूप में विफल होना चाहिए। तो बड़े मुद्दे होंगे। – Joe

1

आप बस की जाँच कर सकते हैं:

if (childLoad) 
    childLoad() 
+0

क्रोम में विफल रहता है। typeof विधि काम करता है। \ –

55
if (typeof childLoad == 'function') { 
    childLoad(); 
} 
0

आप एक कोशिश पकड़ में उसके दोनों ओर सकता है!

0
<script> 
/* yourfunction */ 
if(typeof yourfunction == 'function') { 
    yourfunction(); 
} 
function yourfunction(){ 
    //function code 
} 
</script> 
की
+0

इस कोड को इस सवाल का जवाब कर सकते हैं, अतिरिक्त _why_ के बारे में संदर्भ प्रदान करने और/या _how_ इस कोड सवाल काफी अपने लंबी अवधि के मूल्य में सुधार होगा जवाब। कुछ स्पष्टीकरण जोड़ने के लिए कृपया अपना उत्तर संपादित करें। –

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