अगर एक चर शून्य नहीं है, तो कैसे जांचें?


285

मुझे पता है कि नीचे दो तरीके हैं जावास्क्रिप्ट में यह जांचने के लिए कि एक चर नहीं है null, लेकिन मैं भ्रमित हूं जो उपयोग करने के लिए सबसे अच्छा अभ्यास है।

क्या मुझे करना चाहिए:

if (myVar) {...}

या

if (myVar !== null) {...}

जवाबों:


399

वे समकक्ष नहीं हैं। पहले खंड निम्नलिखित निष्पादित करेंगे ifबयान करता है, तो myVarहै truthy (अर्थात् मूल्यांकन करता है trueएक सशर्त में) है, जबकि दूसरे खंड निष्पादित करेंगे अगर myVarकिसी भी अन्य की तुलना में मूल्य है null

केवल मान जो जावास्क्रिप्ट में सत्य नहीं हैं, वे निम्नलिखित हैं (उर्फ मिथ्या मूल्य):

  • null
  • undefined
  • 0
  • "" (खाली स्ट्रिंग)
  • false
  • NaN

69

यहां बताया गया है कि अगर कोई वैरिएबल NULL नहीं है तो आप कैसे टेस्ट कर सकते हैं:

if (myVar !== null) {...}

ब्लॉक को निष्पादित किया जाएगा यदि myVar शून्य नहीं है .. यदि myVar अपरिभाषित या गलत 0या NaNया कुछ और है तो इसे निष्पादित किया जाएगा ।


1
सोच रहे लोगों के लिए ... यह एक खाली स्ट्रिंग ("")और अपरिभाषित के लिए जाँच नहीं करता है । संदर्भ के रूप में मेरी
पहेली

47

इस पोस्ट को पढ़ें: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

यह सामान्य रूप से जावास्क्रिप्ट के लिए कुछ अच्छा सुझाव है, लेकिन एक बात यह उल्लेख करता है कि आपको अशक्त के लिए जाँच करनी चाहिए:

if(myvar) { }

इसमें यह भी उल्लेख किया गया है कि क्या 'गलत' माना जाता है जिसे आप महसूस नहीं कर सकते हैं।


33
यह चेक वास्तव में सुरक्षित नहीं है। यदि myvar 0 है, तो झूठा या कोई अन्य गलत मान परीक्षण विफल हो जाएगा (यदि आप केवल शून्य के लिए जाँच करने का इरादा रखते हैं)। तो इसका उपयोग केवल शून्य नहीं होने के लिए जाँचने के लिए करें यदि चर का दूसरा गलत मान नहीं हो सकता।
Werzi2001

2
लिंक अब काम नहीं करता है। मुझे लगता है कि यहाँ पोस्ट प्रतीत होती है की एक प्रति मिली: appendto.com/2010/10/… हालांकि यह अजीब है, क्योंकि एलियाह की पोस्ट (और नमूना कोड) सुझाव देगा कि वह लेखक है, लेकिन वह वहां लेखक के रूप में सूचीबद्ध नहीं है ...
Thepaulpage

2
ऐसा लगता है कि साइट अब मौजूद नहीं है। यह उपयोगी होगा यदि आप केवल बाहरी लिंक के बजाय पोस्ट में जानकारी शामिल कर सकते हैं।
18

यदि मान वर्तमान में है, लेकिन यह काम नहीं करेगा (शून्य)
zmechanic

15
  • आपके अंदर का कोड if(myVar) { code }केवल तब निष्पादित नहीं किया जाएगा, जब myVarयह बराबर हो: false, 0, "", null, undefined, NaNया आपने कभी भी चर को परिभाषित नहीं किया है myVar(फिर इसके अतिरिक्त कोड निष्पादन और अपवाद को छोड़ दें)।
  • आपके अंदर कोड if(myVar !== null) {code}केवल तब ही निष्पादित नहीं किया जाएगा जब myVarआप समान हों nullया आपने कभी इसे परिभाषित नहीं किया हो (अपवाद को फेंकता है)।

यहाँ आपके पास सभी ( src ) हैं

अगर

यहां छवि विवरण दर्ज करें

== (इसकी उपेक्षा ! = )

यहां छवि विवरण दर्ज करें

=== (इसकी उपेक्षा ! == )

यहां छवि विवरण दर्ज करें


9

एक और संभावित परिदृश्य है जो मैं अभी सामने आया हूं।

मैंने एक अजाक्स कॉल किया और एक स्ट्रिंग प्रारूप में डेटा को शून्य के रूप में वापस मिला। मुझे इसे इस तरह से जांचना था:

if(value != 'null'){}

तो, नल एक स्ट्रिंग था जो वास्तव में अशक्त होने के बजाय "अशक्त" पढ़ता था।

संपादित करें: यह समझा जाना चाहिए कि मैं इसे नहीं बेच रहा हूं जिस तरह से इसे किया जाना चाहिए। मेरे पास एक परिदृश्य था जहां यह एकमात्र तरीका था जो कि किया जा सकता था। मुझे यकीन नहीं है कि क्यों ... शायद बैक-एंड लिखने वाला लड़का गलत तरीके से डेटा पेश कर रहा था, लेकिन परवाह किए बिना, यह वास्तविक जीवन है। यह निराशा होती है कि यह किसी ऐसे व्यक्ति द्वारा देखा गया है जो समझता है कि यह बिलकुल सही नहीं है, और फिर किसी व्यक्ति द्वारा मतदान किया जाना वास्तव में मदद करता है।


बल्कि nullस्ट्रिंग्स के खिलाफ तुलना करने के बजाय अपने मूल्य को पार्स करें ।
बरगी

1
यह उत्तर वैध है, चाहे आप इसके आवेदन को समझते हों या नहीं। मैं उन चीजों को पोस्ट करने के लिए सराहना नहीं करता, जो वास्तव में काम करती थीं। क्या आपने देखा कि इसे छूने से पहले इसका उत्थान हुआ था? ऐसा इसलिए है क्योंकि यह एक वास्तविक परिदृश्य है।
फ्लैट कैट

3
हां, और मैं नीच हूं क्योंकि मुझे लगता है कि यह गलत समाधान है। अजाक्स कॉल के मामले में, आपको बेहतर करना चाहिए value = JSON.parse(value)और फिर सरल और उचित value != nullपरीक्षण का उपयोग करना चाहिए
बर्गी

2
जाहिर है आप समझ में नहीं आता है। मुझे लगता है कि आपको लगता है कि आप करते हैं, लेकिन आप नहीं करते।
फ्लैट कैट

4
मैं समझता हूं कि यह एक कार्यशील समाधान था। लेकिन मुझे नहीं लगता कि यह अच्छी सलाह है, इसलिए कृपया मेरे अपमान का सम्मान करें।
बरगी

1

यदि myVarयह शून्य है तो यदि ब्लॉक अन्य वार को निष्पादित नहीं करता है तो यह निष्पादित होगा।

if (myVar != null) {...}


स्ट्रिंग नहीं 'null', बल्कि विशेष मूल्य है null
मीका वाल्टर

1

कभी-कभी अगर इसे परिभाषित नहीं किया गया तो तैयार रहना बेहतर है। इसके लिए मैंने टाइपोफ का इस्तेमाल किया

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}

-4

आप जिन दो सशर्त बयानों को यहां सूचीबद्ध करते हैं, वे एक दूसरे से बेहतर नहीं हैं। आपका उपयोग स्थिति पर निर्भर करता है। आपके पास 2 उदाहरण में एक टाइपो है। विस्मयादिबोधक चिह्न के बाद केवल एक बराबर चिन्ह होना चाहिए।

1 उदाहरण यह निर्धारित करता है कि myVar में मान सही है या {{}} के अंदर कोड निष्पादित करता है

दूसरा उदाहरण मूल्यांकन करता है कि क्या myVar बराबर नहीं है और यदि यह मामला सत्य है तो यह आपके कोड को {}} के अंदर निष्पादित करेगा

मेरा सुझाव है कि अधिक तकनीकों के लिए सशर्त बयानों पर गौर करें। एक बार जब आप उनसे परिचित हो जाते हैं, तो आप यह तय कर सकते हैं कि आपको कब उनकी आवश्यकता है।


12
यह शायद दूसरे उदाहरण में एक टाइपो नहीं है। यह दूसरा =महत्वपूर्ण है और प्रश्न पर भारी पड़ता है। शायद आप जावास्क्रिप्ट में !==और ===ऑपरेटरों के अस्तित्व से अवगत नहीं हैं ?
टिम डाउन

1
यह बात बताने के लिए धन्यवाद। मैंने तुरंत सोचा कि यह एक टाइपो था, लेकिन अब इसे याद करें जो मैंने कुछ समय में नहीं देखा था और इसके बारे में भूल गया था।
डॉक्‍टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.