2009-11-13 16 views
8

मस्तिष्क विश्वसनीय तरीका क्या है यदि मैं यह जांचना चाहता हूं कि चर शून्य है या मौजूद नहीं है?यह देखने के लिए सबसे विश्वसनीय तरीका क्या है कि एक जावास्क्रिप्ट चर शून्य है?

if (null == yourvar) 

if (typeof yourvar != 'undefined') 

if (undefined != yourvar) 
+2

'===' और '! ==' – jantimon

+0

का उपयोग करें "विश्वसनीय" से आपका क्या मतलब है? – rjmunro

+0

** यह भी देखें: ** http://stackoverflow.com/questions/24318654 – dreftymac

उत्तर

13

उपरोक्त में से कोई:

विभिन्न उदाहरण हैं।

आप ==, या इसके विभिन्न प्रकार का उपयोग नहीं करना चाहते हैं, क्योंकि it performs type coercion। यदि आप वास्तव में जांचना चाहते हैं कि कुछ स्पष्ट रूप से शून्य है, तो === ऑपरेटर का उपयोग करें।

फिर, आपका प्रश्न शायद आपकी आवश्यकताओं की स्पष्टता की कमी दिखाता है। क्या आप वास्तव में null विशेष रूप से मतलब है; या undefined भी गिनती है? myVar === null निश्चित रूप से आपको बताएगा कि क्या चर शून्य है, जो प्रश्न आपने पूछा है, लेकिन क्या यह वास्तव में आप चाहते हैं?

ध्यान दें कि this SO question में बहुत अधिक जानकारी है। यह प्रत्यक्ष डुप्लिकेट नहीं है, लेकिन इसमें बहुत समान सिद्धांत शामिल हैं।

+0

शून्य और अपरिभाषित प्रकार == (लेकिन नहीं ===) हैं। – rahul

+0

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Comparison_Operators – rahul

+0

लिंक एडैमेंटियम के लिए धन्यवाद, मेरे उत्तर में जोड़ा गया। –

4

मैं

if (null == yourvar) 

जो इस परिदृश्य

if (yourvar = null) 

संपादित

जावास्क्रिप्ट दोनों सख्त और प्रकार परिवर्तित करने समानता तुलना है में आकस्मिक काम से बचा जाता है पसंद करते हैं।

* Two strings are strictly equal when they have the same sequence of characters, 
    same length, and same characters in corresponding positions. 
* Two numbers are strictly equal when they are numerically equal (have the 
    same number value). NaN is not equal to anything, including NaN. 
    Positive and negative zeros are equal to one another. 
* Two Boolean operands are strictly equal if both are true or both are false. 
* Two objects are strictly equal if they refer to the same Object. 

अशक्त और अपरिभाषित प्रकार == कर रहे हैं (लेकिन नहीं ===)

पढ़ें Comparison Operators

+0

नीचे वोट के लिए कोई कारण? – rahul

+0

@adamantium: कृपया संपादित करें। आपने मेरे डाउनवोट के बाद बहुत कुछ जोड़ा;) मूल रूप से आप पूरी तरह से प्रश्न के लक्ष्य को याद करते हैं ('अपरिभाषित' से परहेज करते हुए), जिसे आपने अभी संबोधित किया है। –

0
: सख्त समानता के लिए वस्तुओं तुलना की जा रही एक ही प्रकार के और होना आवश्यक है

यदि आपको परवाह नहीं है कि यह ठीक या शून्य है या गलत या 0 है, और बस यह देखना चाहते हैं कि यह मूल रूप से "अनसेट" है, तो ऑपरेटर का उपयोग न करें:

if (yourVar) 
+1

इसके साथ एकमात्र समस्या यह है कि यदि 'yourVar' 0 पर सेट किया गया है, या' 0 ', या एक खाली स्ट्रिंग, या संभवतः अन्य चीजों का एक समूह है तो यह अभी भी' झूठी 'वापस आ जाएगा। तो यह जांचने का एक बहुत बुरा तरीका है कि यह सामान्य रूप से सेट किया गया है या नहीं; केवल तभी लागू होता है यदि आप ** जानते हैं ** सभी संभावित मान * झूठी * नहीं हैं। –

+0

हां। लेकिन चूंकि वह दोनों शून्य और अपरिभाषित शीर्ष की तुलना में उल्लेख करता है, मुझे लगता है कि वह कुछ _objecty_ कर रहा है और वास्तव में उन मुद्दों के बारे में चिंता करने की ज़रूरत नहीं है। –

1

"अपरिभाषित" "शून्य" नहीं है।की तुलना करें

  • चम्मच खाली है (= नल)
  • कोई चम्मच (= अपरिभाषित)

कुछ तथ्य है कि आप मदद कर सकते हैं आगे

  • typeof अपरिभाषित "अपरिभाषित है "
  • टाइपऑफ नल" ऑब्जेक्ट "
  • अपरिभाषित बराबर (==) से nul माना जाता है एल और इसके विपरीत
  • कोई अन्य मूल्य या तो अशक्त या अपरिभाषित
0

if (null == yourvar) और if (typeof yourvar != 'undefined') बहुत अलग काम करने के लिए बराबर (==) है। एक मानता है कि चर मौजूद है, दूसरा करता है। मैं सुझाव दूंगा कि दोनों को मिश्रण न करें। जानें कि इससे पहले कि आप इसके मूल्य से निपटने से पहले इसकी उपस्थिति के साथ परिवर्तनीय सौदे की अपेक्षा करें।

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

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