2012-09-04 11 views
25

Possible Duplicate:
Detecting an undefined object property in JavaScript
How to determine if variable is 'undefined' or 'null'यदि किसी वैरिएबल दोनों अशक्त और/या जावास्क्रिप्ट

मेरी कोड में अपरिभाषित है कैसे जाँच करने के लिए, मैं एक शर्त है कि

तरह
if (variable !== null && variable !== undefined) { 
} 

लेकिन बजाय दो चरणों में यह कर के लग रहा है, यानी जांच कर रहा है कि यह परिभाषित नहीं है और शून्य नहीं है। क्या एक चरण की जांच है जो इस चेक को बदल देती है।

+0

यह बिल्कुल अपने कोड धीमा करता है, तो यह है कि क्या आप के बारे में चिंतित हैं है नहीं है। – Blazemonger

+0

फ़ंक्शन का उपयोग करें: 'फ़ंक्शन isNullOrUndefined (variable) {return variable === null || चर === अपरिभाषित; } '। – VisioN

+0

@VisioN यदि आप किसी फ़ंक्शन में एक अपरिभाषित चर को तर्क के रूप में पास करते हैं, तो आपको एक त्रुटि मिल जाएगी। – dqhendricks

उत्तर

41

एक चर दोनों null और undefined दोनों एक ही समय में नहीं हो सकता है। हालांकि, अपने सवाल का सीधा जवाब है:

if (variable != null) 

एक =, नहीं दो।

"सार समानता तुलना एल्गोरिथ्म" जावास्क्रिप्ट कल्पना एक संकार्य null किया जा रहा है और अन्य undefined जा रहा है के मामले के लिए समर्पित में में दो विशेष खंड हैं, और परिणाम == के लिए true और != के लिए false है। इस प्रकार यदि चर का मान undefined है, तो यह != null नहीं है, और यदि यह शून्य नहीं है, तो यह स्पष्ट रूप से != null नहीं है।

अब, एक पहचानकर्ता के मामले नहीं सभी पर, या तो एक var या let के रूप में, परिभाषित किया जा रहा एक समारोह पैरामीटर के रूप में, या के रूप में वैश्विक संदर्भ का एक गुण अलग है। ऐसे पहचानकर्ता के संदर्भ को रनटाइम पर एक त्रुटि के रूप में माना जाता है। आप संदर्भ का प्रयास कर सकते हैं और त्रुटि पकड़ सकते हैं:

var isDefined = false; 
try { 
    (variable); 
    isDefined = true; 
} 
catch (x) {} 

मैं व्यक्तिगत रूप से एक संदिग्ध अभ्यास पर विचार करता हूं।

var isJqueryAvailable = window.jQuery != null; 

या

var isJqueryAvailable = "jQuery" in window; 
: वैश्विक प्रतीक या वहाँ उपस्थिति या कुछ अन्य पुस्तकालय के अभाव, या कुछ इसी तरह की स्थिति के आधार पर किया जा सकता है हो सकता है कि के लिए, आप एक window संपत्ति (ब्राउज़र जावास्क्रिप्ट में) के लिए परीक्षण कर सकते हैं
+0

हालांकि यह सही है और ओपी के प्रश्न का उत्तर देता है, मुझे लगता है कि मूल कोड स्पष्ट है। हर कोई 'x! = Null' के बीच सूक्ष्म अंतर को पहचान नहीं पाएगा और '! X' कहेंगे। – RobG

+1

@RobG अच्छी तरह से, मैं आम तौर पर अपने स्रोत कोड भंडार में "हर कोई" पहुंच नहीं देता :-) मुझे लगता है कि जावास्क्रिप्ट कोडर के लिए यह महत्वपूर्ण है कि दूसरे शब्दों में, इस तरह की चीज़ों को जान सकें। – Pointy

+0

महान जवाब! __ – johnjohn

6

आप अपनी खुद की समारोह में लपेट कर सकते हैं:

function isNullAndUndef(variable) { 

    return (variable !== null && variable !== undefined); 
} 
+1

या कम से कम 'वापसी (चर! == शून्य और चर! == अपरिभाषित); 'चलो! यह कहने की तरह है कि 'अगर (सच) {वापसी सच है; } झूठी वापसी; ' – jeremy

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