मैं जावास्क्रिप्ट में शून्य मान के लिए कैसे जांच करूं?


573

मैं जावास्क्रिप्ट में शून्य मान की जांच कैसे कर सकता हूं? मैंने नीचे कोड लिखा था, लेकिन यह काम नहीं किया।

if (pass == null || cpass == null || email == null || cemail == null || user == null) {      

    alert("fill all columns");
    return false;  

}   

और मैं अपने जावास्क्रिप्ट कार्यक्रमों में त्रुटियों को कैसे पा सकता हूं?


क्या आप सुनिश्चित हैं कि आपके द्वारा परीक्षण किए जा रहे मूल्य वास्तव में शून्य हैं और न केवल रिक्त स्ट्रिंग?
जनवरी-पीटर वोस

72
nulljs में परीक्षण सख्त ऑपरेटर के साथ किया जाना चाहिए===
davin

3
@ डैविन - सच है, लेकिन यहाँ समस्या नहीं है अगर यह कथन होता तो भी काम होता।
मार्क कान

3
@cwolves, अगर मुझे लगता है कि यह समस्या थी जो मैंने उस टिप्पणी का जवाब दिया होगा। मेरे शब्दों को देखें, मैं स्पष्ट रूप से ओपी के अभ्यास के संदर्भ में भाषा के बारे में एक सामान्य बयान दे रहा हूं, और यह प्रस्ताव नहीं करता कि यह आपकी समस्या का हल करता है।
डेविन

2
@TRiG प्रस्तावित परिवर्तनों ने मूल रूप से प्रश्न की प्रकृति को उस बिंदु पर बदल दिया जहां उत्तर (सिर्फ मेरा नहीं) संदर्भ खो देते हैं और समझ में नहीं आते हैं। संपादन केवल एक टिप्पणी होना चाहिए।
ic3b3rg

जवाबों:


741

"नल" मानों की जाँच के संबंध में जावास्क्रिप्ट बहुत लचीली है। मुझे लगता है कि आप वास्तव में खाली तारों की तलाश कर रहे हैं, इस स्थिति में यह सरल कोड काम करेगा:

if(!pass || !cpass || !email || !cemail || !user){

कौन सा रिक्त स्ट्रिंग (के लिए जाँच करेगा ""), null, undefined, falseऔर संख्या 0औरNaN

कृपया ध्यान दें कि यह याद आती है के लिए एक आम गलती है, तो आप विशेष रूप से संख्या के लिए जाँच कर रहे हैं 0इस विधि के साथ, और num !== 0पसंद किया जाता है (या num !== -1या ~num(hacky कोड वह भी विरुद्ध जांच -1)) कार्यों के लिए है कि वापसी -1, जैसे indexOf)


4
यह जानना बहुत उपयोगी होगा कि इस परीक्षण के कौन से भाग किन मूल्यों के लिए हैं। कभी-कभी आप विशेष रूप से एक की तलाश कर रहे हैं।
अकार्बनिक

2
कुछ हद तक देर से बयान, लेकिन हाँ, आप हर एक के खिलाफ परीक्षण कर सकते हैं @inorganik, नीचे मेरा जवाब देखें
WebWanderer

28
संख्यात्मक डेटा पर इस प्रकार के परीक्षण का उपयोग करते समय पाठक सावधान रहें। जब तक आप भी 0. के मानों को फेंकना नहीं चाहते हैं, तब तक या आम तौर पर-संख्यात्मक डेटा पर परीक्षण !या उपयोग न करें,!!nullundefined
1

4
उत्तर में यह कहा गया है: "... और संख्या 0..."। मेरा मानना ​​है कि यह उत्तर प्रश्न के लिए पूरी तरह उपयुक्त है क्योंकि संदर्भ दिया गया है (जो कि मैं बता रहा हूं "उपयोगकर्ता नाम, पासवर्ड, ईमेल"), वे 0मानों के लिए जाँच नहीं कर रहे हैं। इस प्रश्न और उत्तर की लोकप्रियता को देखते हुए, हालांकि, मैं मानता हूं कि यह उत्तर में ही ध्यान देने योग्य है।
मार्क कान

4
@ हेंडेका - रोल्स आँखें वास्तविक प्रश्न में कोड पढ़ें। यह स्पष्ट रूप से उपयोगकर्ता नाम और पासवर्ड के बारे में पूछ रहा है। मुझे कुछ भी अनुमान नहीं है, मैं बस विनम्र हो रहा था। आप इस तथ्य से परेशान हैं कि मैंने उत्तर दिया कि उन्हें क्या चाहिए और क्या नहीं जो उन्होंने पूछा, जो कि बेतुका है। यह एसओ है, अधिकांश समय लोग यह नहीं जानते हैं कि उन्हें क्या मांगना चाहिए। मूल प्रश्न के संदर्भ में यह उत्तर सही है। अब शोर जोड़ना बंद करो।
मार्क कहन

418

नल के लिए जाँच करने के लिए विशेष रूप से आप इसका उपयोग करेंगे:

if (variable === null)

यह परीक्षण होगा ही के लिए पारित nullऔर के लिए पारित नहीं होगा "", undefined, false, 0, या NaN

इसके अतिरिक्त, मैंने प्रत्येक "झूठे-जैसे" मूल्य के लिए पूर्ण चेक प्रदान किया है (एक ऐसा है जो उसके लिए सही होगा !variable)

ध्यान दें, कुछ पूर्ण जांचों के लिए, आपको absolutely equals: ===और के उपयोग को लागू करने की आवश्यकता होगी typeof

मैंने एक JSField बनाया है, जिसमें सभी अलग-अलग परीक्षण काम कर रहे हैं

यहां प्रत्येक चेक का आउटपुट दिया गया है:

Null Test:

if (variable === null)

- variable = ""; (false) typeof variable = string

- variable = null; (true) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number



Empty String Test:

if (variable === '')

- variable = ''; (true) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number




Undefined Test:

if (typeof variable == "undefined")

-- or --

if (variable === undefined)

- variable = ''; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (true) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number



False Test:

if (variable === false)

- variable = ''; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (true) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number



Zero Test:

if (variable === 0)

- variable = ''; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (true) typeof variable = number

- variable = NaN; (false) typeof variable = number



NaN Test:

if (typeof variable == 'number' && !parseFloat(variable) && variable !== 0)

-- or --

if (isNaN(variable))

- variable = ''; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (true) typeof variable = number

जैसा कि आप देख सकते हैं, इसके खिलाफ परीक्षण करना थोड़ा अधिक कठिन है NaN;


9
यदि आप ===सख्त समानता का उपयोग करते हैं तो टाइप चेकिंग का उद्देश्य क्या है ? धन्यवाद। NaN परीक्षण के लिए भी आप उपयोग कर सकते हैं isNaN(value)जो कि trueकेवल तभी बदलेगा जब NaN बराबर होता है।
माइकल मालिनकोविज

16
क्या कोई ऐसा मामला है जहां variable === nullप्रकार "ऑब्जेक्ट" नहीं है? अगर वहाँ नहीं है, variable === nullतो दूसरे कंजंक्ट को फेंकने के लिए चेक को सरल क्यों नहीं किया जाए ? धन्यवाद।
हुनान रोस्टोमैन

7
@HunanRostomyan अच्छा सवाल है, और ईमानदारी से, नहीं, मुझे नहीं लगता कि वहाँ है। आप सबसे अधिक संभावना सुरक्षित हैं, variable === nullजिसका उपयोग करके मैंने इस जेएसफिल्ड में यहां परीक्षण किया है । जिस कारण से मैंने `&& टाइपोफ़ वैरिएबल === 'ऑब्जेक्ट' का उपयोग किया था, न केवल दिलचस्प तथ्य को स्पष्ट करने के लिए था कि एक nullमूल्य एक टाइपोफ़ है object, बल्कि अन्य चेक के प्रवाह के साथ रखने के लिए भी है। लेकिन हां, निष्कर्ष में, आप बस उपयोग करने के लिए सुरक्षित हैं variable === null
वेबवंडर

1
jsfiddle.net/neoaptt/avt1cgem/1 यहाँ इस उत्तर को कार्यों में तोड़ दिया गया है। बहुत उपयोगी नहीं है, लेकिन मैंने इसे वैसे भी किया।
नवपर्वत

1
मैं कुछ ऐसा करने जा रहा हूं जो लगभग कभी भी एक अच्छा विचार नहीं है: इस उत्तर में कोड को बदलें। विशेष रूप से, प्रकार ऑब्जेक्ट के लिए पूरी तरह से अनावश्यक परीक्षण को हटा दें, जब अशक्त के लिए जाँच कर रहा हो। यह एक मौलिक कोड स्निपेट है: एक अच्छा विचार भी नहीं है कि एक शुरुआत करने वाले को भी यह गलत ज्ञान हो कि उन्हें उस क्रिया का परीक्षण करने की आवश्यकता है।
टूलमेकरसेव

59

बस के ==साथ ===सभी स्थानों में बदलें ।

== एक ढीला या अमूर्त समानता तुलना है

=== एक सख्त समानता तुलना है

अधिक विस्तार के लिए समानता तुलना और समानता पर एमडीएन लेख देखें ।


2
यह केवल तभी काम करता है जब आप नहीं मानते undefinedहैं null। अन्यथा यह बहुत सारे अप्रत्याशित व्यवहार को जन्म देगा। आम तौर पर यदि आप दोनों में रुचि रखते हैं null/ undefinedलेकिन झूठे मूल्यों में नहीं, तो उपयोग करें ==(कुछ मामलों में से एक जब आपको ऐसा करना चाहिए)।
एंड्रयू माओ

2
@AndrewMao undefined नहीं है null : stackoverflow.com/a/5076962/753237
ic3b3rg

2
मुझे विश्वास है कि @AndrewMao वास्तव में कह रहा था। उनका पहला वाक्य फिर से लिखा जा सकता है "यह केवल उन परिस्थितियों में काम करता है जहां अपरिभाषित और अशक्त व्यावहारिक समकक्ष नहीं हैं।"
BobRodes

1
@BusRodes मेरे खराब लेखन को स्पष्ट करने के लिए धन्यवाद, मैं इसकी सराहना करता हूं :)
एंड्रयू माओ

@AndrewMao आपका बहुत-बहुत स्वागत है। और मैं व्यक्तिगत रूप से आपके लेखन को खराब नहीं कहूंगा; मैं कहूंगा कि यह औसत से बेहतर सौदा है। :)
BobRodes

30

सख्त समानता ऑपरेटर: -

हम द्वारा null जाँच कर सकते हैं ===

if ( value === null ){

}

बस इस्तेमाल करके if

if( value ) {

}

अगर मूल्य नहीं है तो सच का मूल्यांकन करेंगे :

  • शून्य
  • अपरिभाषित
  • NaN
  • खाली स्ट्रिंग ("")
  • असत्य
  • 0

9

स्पष्ट रूप nullसे एक सरल वाक्य रचना के साथ जाँच करके स्वीकृत उत्तर पर सुधार :

if ([pass, cpass, email, cemail, user].every(x=>x!==null)) {
    // your code here ...
}

// Test
let pass=1, cpass=1, email=1, cemail=1, user=1; // just to test

if ([pass, cpass, email, cemail, user].every(x=>x!==null)) {
    // your code here ...
    console.log ("Yayy! None of them are null");
} else {
    console.log ("Oops! At-lease one of them is null");
}


6

सबसे पहले, आपके पास एक फ़ंक्शन बॉडी के बिना रिटर्न स्टेटमेंट है। संभावना है कि एक त्रुटि फेंक देंगे।

अपनी जांच करने के लिए एक क्लीनर तरीका बस का उपयोग करना होगा! ऑपरेटर:

if (!pass || !cpass || !email || !cemail || !user) {

    alert("fill all columns");

}

12
यह कोड शायद एक समारोह में है, वह अभी नहीं दिखा;)
मार्क कान

4

आप अंत में कोशिश पकड़ने का उपयोग कर सकते हैं

 try {
     document.getElementById("mydiv").innerHTML = 'Success' //assuming "mydiv" is undefined
 } catch (e) {

     if (e.name.toString() == "TypeError") //evals to true in this case
     //do something

 } finally {}   

आप throwअपनी त्रुटियां भी कर सकते हैं। देखें इस


1
मुझे लगता है कि यह 'पैरानॉयड' कोड के रूप में योग्य है। यदि आप वास्तव में ऐसा कुछ लिखते हैं, तो यह एक समझ के साथ होगा कि "mydiv" संभवतः मौजूद नहीं हो सकता है। जब तक हम आश्वस्त न हों कि हमें इस कोड तक नहीं पहुंचना चाहिए, और हमारे पास इस तरह की लाइन का प्रयास करने से पहले सुनिश्चित करने के लिए प्रतिक्रिया कोड जैसे कई रास्ते होंगे।
calql8edkos

नियंत्रण के प्रवाह के लिए कोशिश और पकड़ का उपयोग न करें। यह एक अच्छा उपाय नहीं है।
एंड्रयू एस

4

जावास्क्रिप्ट में, कोई स्ट्रिंग के बराबर नहीं है null

हो सकता है कि आपको खाली स्ट्रिंग होने pass == nullपर सही होने की उम्मीद हो passक्योंकि आप जानते हैं कि ढीला समानता ऑपरेटर ==कुछ प्रकार के प्रकार का कार्य करता है।

उदाहरण के लिए, यह अभिव्यक्ति सत्य है:

'' == 0

इसके विपरीत, सख्त समानता ऑपरेटर ===कहता है कि यह गलत है:

'' === 0

यह देखते हुए ''और 0शिथिल समान हैं, आप यथोचित रूप से अनुमान लगा सकते हैं ''और nullशिथिल समान हैं। हालांकि, वे नहीं हैं।

यह अभिव्यक्ति गलत है:

'' == null

किसी भी स्ट्रिंग की तुलना करने का परिणाम nullगलत है। इसलिए, pass == nullऔर आपके अन्य सभी परीक्षण हमेशा झूठे होते हैं, और उपयोगकर्ता को कभी भी चेतावनी नहीं मिलती है।

अपना कोड ठीक करने के लिए, प्रत्येक मान की तुलना खाली स्ट्रिंग से करें:

pass === ''

यदि आप निश्चित हैं कि passएक स्ट्रिंग है, pass == ''तो भी काम करेगा क्योंकि केवल एक खाली स्ट्रिंग शिथिल स्ट्रिंग के बराबर है। दूसरी ओर, कुछ विशेषज्ञों का कहना है कि यह जावास्क्रिप्ट में हमेशा सख्त समानता का उपयोग करने के लिए एक अच्छा अभ्यास है जब तक कि आप विशेष रूप से उस प्रकार का जबरदस्ती नहीं करना चाहते हैं जो ढीला समानता ऑपरेटर करता है।

यदि आप यह जानना चाहते हैं कि मूल्यों के जोड़े क्या समान रूप से समान हैं, तो इस विषय पर मोज़िला लेख में तालिका "समानता तुलना" देखें


4

जावास्क्रिप्ट के लिए अपरिभाषित और अशक्त की जाँच करने के लिए आपको केवल निम्नलिखित लिखने की आवश्यकता है:

if (!var) {
        console.log("var IS null or undefined");
} else {
        console.log("var is NOT null or undefined");
}

6
var 0, "", NaN, और असत्य के साथ भी सत्य है।
मैट

3

यह NaN के लिए जाँच करने के बारे में वेबवेंडर के समाधान पर एक टिप्पणी है (मेरे पास औपचारिक टिप्पणी छोड़ने के लिए अभी तक पर्याप्त प्रतिनिधि नहीं है)। समाधान के रूप में पढ़ता है

if(!parseInt(variable) && variable != 0 && typeof variable === "number")

लेकिन यह तर्कसंगत संख्याओं के लिए विफल हो जाएगा जो 0इस तरह के रूप में गोल होगा variable = 0.1। एक बेहतर परीक्षा होगी:

if(isNaN(variable) && typeof variable === "number")

1
बग गेब्रियल को इंगित करने के लिए धन्यवाद, मैंने अपने उत्तर में सुधार डाल दिया है। कि के अलावा, मैं बदलकर परीक्षण को ठीक करने में सक्षम था parseIntकरने के लिए parseFloat (पहली जगह में मेरे लिए स्पष्ट किया गया है चाहिए)। मैंने isNanफ़ंक्शन का उपयोग करने से परहेज किया क्योंकि मुझे ऐसा लगता है जैसे कि कई डेवलपर्स फ़ंक्शंस देखते हैं जैसे कि isNaN"मैजिक बॉक्स" के कुछ प्रकार जो मानों में जाते हैं और बूलियन निकलते हैं, और मैं चाहता था कि परीक्षण थोड़ा और गहराई से हो। लेकिन हाँ, आपका सुझाया परीक्षण काम करेगा और उपयोग करने के लिए पूरी तरह से ठीक है। क्षमा करें, मैंने अब तक आपकी पोस्ट को नोटिस नहीं किया है।
वेबवैंडर

1
महान, वह काम करने लगता है। इस टिप्पणी के लिए धन्यवाद कि आपने क्यों टाला isNaN, मैं उस तर्क के पीछे जा सकता हूं। अंडरस्कोर.जेएस पद्धति भी है, जो कि अधिक भ्रामक / ब्लैकबॉक्स लगता है, लेकिन वैसे भी ध्यान देने योग्य है क्योंकि यह लाभ उठाता है NaN !== NaNObject.prototype.toString.call(variable) === '[object Number]' && variable !== +variable
गैब्रियल

2

वास्तव में मुझे लगता है कि आपको उपयोग करने की आवश्यकता हो सकती है if (value !== null || value !== undefined) क्योंकि यदि आप उपयोग करते if (value)हैं तो आप 0 या गलत मानों को भी फ़िल्टर कर सकते हैं।

इन दो कार्यों पर विचार करें:

const firstTest = value => {
    if (value) {
        console.log('passed');
    } else {
        console.log('failed');
    }
}
const secondTest = value => {
    if (value !== null && value !== undefined) {
        console.log('passed');
    } else {
        console.log('failed');
    }
}

firstTest(0);            // result: failed
secondTest(0);           // result: passed

firstTest(false);        // result: failed
secondTest(false);       // result: passed

firstTest('');           // result: failed
secondTest('');          // result: passed

firstTest(null);         // result: failed
secondTest(null);        // result: failed

firstTest(undefined);    // result: failed
secondTest(undefined);   // result: failed

मेरी स्थिति में, मैं सिर्फ अगर मान शून्य है की जाँच करने के लिए आवश्यक और अपरिभाषित और मैं फिल्टर नहीं करना चाहता था 0या falseया ''मूल्यों। इसलिए मैंने दूसरे परीक्षण का उपयोग किया, लेकिन आपको उन्हें भी फ़िल्टर करने की आवश्यकता हो सकती है जिसके कारण आप पहले परीक्षण का उपयोग कर सकते हैं।


1

अगर मूल्य शून्य है तो मुझे परीक्षण करने का एक और तरीका मिला:

if(variable >= 0 && typeof variable === "object")

nullएक ही समय में numberऔर के रूप में कार्य करता है object। में तुलना null >= 0या null <= 0परिणाम true। तुलना null === 0या null > 0या null < 0गलत का परिणाम देगा। लेकिन जैसा nullकि एक वस्तु भी है, हम इसे एक अशक्त के रूप में पहचान सकते हैं।

मैंने एक अधिक जटिल फ़ंक्शन बनाया है टाइपऑफ़ की तुलना में नेचरोफ़ चुड़ैल बेहतर करेगी और यह बताया जा सकता है कि किस प्रकार को शामिल करना या समूहबद्ध रखना है

/* function natureof(variable, [included types])
included types are 
    null - null will result in "undefined" or if included, will result in "null"
    NaN - NaN will result in "undefined" or if included, will result in "NaN"
    -infinity - will separate negative -Inifity from "Infinity"
    number - will split number into "int" or "double"
    array - will separate "array" from "object"
    empty - empty "string" will result in "empty" or
    empty=undefined - empty "string" will result in "undefined"
*/
function natureof(v, ...types){
/*null*/            if(v === null) return types.includes('null') ? "null" : "undefined";
/*NaN*/             if(typeof v == "number") return (isNaN(v)) ? types.includes('NaN') ? "NaN" : "undefined" : 
/*-infinity*/       (v+1 === v) ? (types.includes('-infinity') && v === Number.NEGATIVE_INFINITY) ? "-infinity" : "infinity" : 
/*number*/          (types.includes('number')) ? (Number.isInteger(v)) ? "int" : "double" : "number";
/*array*/           if(typeof v == "object") return (types.includes('array') && Array.isArray(v)) ? "array" : "object";
/*empty*/           if(typeof v == "string") return (v == "") ? types.includes('empty') ? "empty" : 
/*empty=undefined*/ types.includes('empty=undefined') ? "undefined" : "string" : "string";
                    else return typeof v
}

// DEMO
let types = [null, "", "string", undefined, NaN, Infinity, -Infinity, false, "false", true, "true", 0, 1, -1, 0.1, "test", {var:1}, [1,2], {0: 1, 1: 2, length: 2}]

for(i in types){
console.log("natureof ", types[i], " = ", natureof(types[i], "null", "NaN", "-infinity", "number", "array", "empty=undefined")) 
}


1

मैंने यह बहुत ही सरल कार्य किया जो अद्भुत काम करता है:

function safeOrZero(route) {
  try {
    Function(`return (${route})`)();
  } catch (error) {
    return 0;
  }
  return Function(`return (${route})`)();
}

मार्ग जो भी मूल्यों की श्रृंखला है जो उड़ा सकता है। मैं इसे jQuery / जयकार और वस्तुओं और इस तरह के लिए उपयोग करता हूं।

उदाहरण 1: एक साधारण वस्तु जैसे कि const testObj = {items: [{ val: 'haya' }, { val: null }, { val: 'hum!' }];};

लेकिन यह एक बहुत बड़ी वस्तु हो सकती है जिसे हमने बनाया भी नहीं है। इसलिए मैं इसे पास करता हूं:

let value1 = testobj.items[2].val;  // "hum!"
let value2 = testobj.items[3].val;  // Uncaught TypeError: Cannot read property 'val' of undefined

let svalue1 = safeOrZero(`testobj.items[2].val`)  // "hum!"
let svalue2 = safeOrZero(`testobj.items[3].val`)  // 0

बेशक अगर आप चाहें तो आप का उपयोग कर सकते हैं nullया 'No value'... जो भी आपकी आवश्यकताओं के अनुरूप है।

आमतौर पर एक DOM क्वेरी या एक jQuery चयनकर्ता एक त्रुटि फेंक सकता है अगर यह नहीं मिला। लेकिन कुछ का उपयोग कर की तरह:

const bookLink = safeOrZero($('span.guidebook > a')[0].href);
if(bookLink){
  [...]
}

1

आप मान को जांचने के लिए लॉकेट का उपयोग कर सकते हैं अशक्त या अपरिभाषित

_.isNil(value)
Example 

 country= "Abc"
    _.isNil(country)
    //false

   state= null
    _.isNil(state)
    //true

city= undefined
    _.isNil(state)
    //true

   pin= true
    _.isNil(pin)
    // false   

संदर्भ लिंक: https://lodash.com/docs/#isNil


0

पूर्व के लिए DB से आने वाले बूलियन मानों के मामले में यह काम नहीं करेगा:

 value = false

 if(!value) {
   // it will change all false values to not available
   return "not available"
 }

0

JAVASCRIPT में AFAIK जब एक वैरिएबल घोषित किया गया है, लेकिन मान निर्दिष्ट नहीं किया गया है, तो इसका प्रकार है undefined। इसलिए हम वेरिएबल की जांच कर सकते हैं, भले ही यह मूल्य के स्थान पर objectकुछ उदाहरण हो ।

अशक्तता की जाँच करने के लिए एक सहायक विधि बनाएँ जो trueआपके एपीआई में वापस आए और उसका उपयोग करे।

यह जाँचने के लिए हेल्पर फंक्शन कि क्या वेरिएबल खाली है:

function isEmpty(item){
    if(item){
        return false;
    }else{
        return true;
    }
}

असाधारण एपीआई कॉल को पकड़ने की कोशिश करें:

try {

    var pass, cpass, email, cemail, user; // only declared but contains nothing.

    // parametrs checking
    if(isEmpty(pass) || isEmpty(cpass) || isEmpty(email) || isEmpty(cemail) || isEmpty(user)){
        console.log("One or More of these parameter contains no vlaue. [pass] and-or [cpass] and-or [email] and-or [cemail] and-or [user]");
    }else{
        // do stuff
    }

} catch (e) {
    if (e instanceof ReferenceError) {
        console.log(e.message); // debugging purpose
        return true;
    } else {
        console.log(e.message); // debugging purpose
        return true;
    }
}

कुछ परीक्षण मामले:

var item = ""; // isEmpty? true
var item = " "; // isEmpty? false
var item; // isEmpty? true
var item = 0; // isEmpty? true
var item = 1; // isEmpty? false
var item = "AAAAA"; // isEmpty? false
var item = NaN; // isEmpty? true
var item = null; // isEmpty? true
var item = undefined; // isEmpty? true

console.log("isEmpty? "+isEmpty(item));

1
क्या? इस उत्तर का इस पोस्ट से कोई लेना देना नहीं है। क्या आपने इस उत्तर को इस धागे पर दुर्घटना से पोस्ट किया है?
वेबवंडर

यह isEmptyफ़ंक्शन बिल्कुल वैसा ही व्यवहार करता है !। कोई फ़ंक्शन का आविष्कार करने की आवश्यकता नहीं है। बस करोif (!pass || !cpass || !email ...) । (जो पहले से ही स्वीकृत उत्तर में दिखाया गया है।) और प्रति वेबवेंडर की टिप्पणी के अनुसार, इस पोस्ट का मध्य भाग, "ट्राइ-कैच असाधारण एपीआई कॉल", इस प्रश्न के लिए प्रासंगिक प्रतीत नहीं होता है। कृपया अपना इरादा स्पष्ट करें - यह कब उपयोगी है? प्रश्न से कैसे संबंधित है?
टूलमेकरसैट

0

त्रुटि की स्थिति की जाँच:

// Typical API response data
let data = {
  status: true,
  user: [],
  total: 0,
  activity: {sports: 1}
}

// A flag that checks whether all conditions were met or not
var passed = true;

// Boolean check
if (data['status'] === undefined || data['status'] == false){
  console.log("Undefined / no `status` data");
  passed = false;
}

// Array/dict check
if (data['user'] === undefined || !data['user'].length){
  console.log("Undefined / no `user` data");
  passed = false;
}

// Checking a key in a dictionary
if (data['activity'] === undefined || data['activity']['time'] === undefined){
   console.log("Undefined / no `time` data");
   passed = false;
}

// Other values check
if (data['total'] === undefined || !data['total']){
  console.log("Undefined / no `total` data");
  passed = false;
}

// Passed all tests?
if (passed){
  console.log("Passed all tests");
}

-1

इसे इस्तेमाल करे:

if (!variable && typeof variable === "object") {
    // variable is null
}

अशक्त केवल वह चीज है जो "मिथ्या" है और टाइपोफ़ "वस्तु" देता है।
14:55 बजे user5520516

2
इससे बेहतर कैसे है if (variable === null)? इसके अलावा किसी ने पहले से ही पिछले साल जवाब दिया है कि: stackoverflow.com/a/27550756/218196
फेलिक्स क्लिंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.