2010-12-21 11 views
6

में कोई मान मौजूद है या नहीं, यदि चेतावनी मान अपरिभाषित है, तो मैं जावास्क्रिप्ट अलर्ट को फायरिंग से कैसे रोकूं? दूसरे शब्दों में, कुछ इस तरह:यह देखने के लिए जांच रहा है कि जावास्क्रिप्ट

if (alert(message) != 'undefined') { 
     alert(message); 
    } 

उत्तर

10

उपयोग typeof:

if (typeof message !== 'undefined') 

if अभिव्यक्ति में alert(message) न रखें, अन्यथा आप निष्पादित करेंगेalert (जिसे हम हम पहले से बचना चाहते हैं message के प्रकार को जानें) और वापसी मूल्य (जो undefined बीटीडब्लू भी है;)) की तुलना undefined से की जाएगी।

अद्यतन !== के लिए स्पष्टीकरण:

इस ऑपरेटर न केवल दो ऑपरेंड का मूल्य लेकिन तुलना भी प्रकार। इसका मतलब है कि कोई type coercion किया जाता है:

42 == "42" // true 
42 === "42" // false 

इस मामले यह वास्तव में आवश्यक नहीं है क्योंकि हम जानते हैं कि typeof हमेशा एक स्ट्रिंग रिटर्न में है, लेकिन यह अच्छा अभ्यास है और यदि आप इसे अच्छी तरह से और लगातार उपयोग करें, यह और अधिक स्पष्ट जहां है आप वास्तव में टाइप जबरन होना चाहते हैं और जहां नहीं।

+2

ध्यान दें कि कैसे फ़ेलिक्स ने! == ऑपरेटर का उपयोग किया था! =। डगलस क्रॉकफोर्ड ने यह (और अन्य भयानक जेएस तथ्यों) को यहां बताया: http://video.yahoo.com/watch/630959/2974197 – danjah

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