मुझे लगता है कि "मूल्य है null
या undefined
" के लिए परीक्षण करने का सबसे कुशल तरीका है
if ( some_variable == null ){
// some_variable is either null or undefined
}
तो ये दो पंक्तियाँ बराबर हैं:
if ( typeof(some_variable) !== "undefined" && some_variable !== null ) {}
if ( some_variable != null ) {}
नोट 1
जैसा कि प्रश्न में उल्लेख किया गया है, लघु संस्करण की आवश्यकता some_variable
है जिसे घोषित किया गया है, अन्यथा एक संदर्भError को फेंक दिया जाएगा। हालांकि कई उपयोग मामलों में आप मान सकते हैं कि यह सुरक्षित है:
वैकल्पिक तर्कों के लिए जाँच करें:
function(foo){
if( foo == null ) {...}
किसी मौजूदा ऑब्जेक्ट पर गुणों की जाँच करें
if(my_obj.foo == null) {...}
दूसरी ओर typeof
अघोषित वैश्विक चर (केवल रिटर्न undefined
) से निपट सकते हैं । फिर भी इन मामलों को कम से कम अच्छे कारणों के लिए कम किया जाना चाहिए, जैसा कि अलसीसेंडे ने समझाया।
नोट 2
यह - और भी छोटा - भिन्न नहीं है:
if ( !some_variable ) {
// some_variable is either null, undefined, 0, NaN, false, or an empty string
}
इसलिए
if ( some_variable ) {
// we don't get here if some_variable is null, undefined, 0, NaN, false, or ""
}
नोट 3
सामान्य तौर पर इसके ===
बजाय उपयोग करने की सिफारिश की जाती है ==
। प्रस्तावित समाधान इस नियम का एक अपवाद है। JSHint वाक्य रचना चेकर भी प्रदान करता है eqnull
इस कारण के लिए विकल्प।
से jQuery शैली गाइड :
सख्त समानता जांच (===) का उपयोग == के पक्ष में किया जाना चाहिए। एकमात्र अपवाद तब होता है जब अशक्त और अशक्त अशक्त के लिए जाँच कर रहा है।
// Check for both undefined and null values, for some important reason.
undefOrNull == null;
if(some_variable) { ... }
अगर अमल नहीं होगाsome_variable
हैfalse
या0
या ...