मैं निम्नलिखित कोड भर में आया हूं:
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
मैं जावास्क्रिप्ट के लिए कुछ नया हूं, लेकिन, अन्य प्रश्नों से, जो मैं यहां पढ़ रहा हूं, मैं इस धारणा के तहत हूं कि यह कोड बहुत मायने नहीं रखता है।
यदि आपको इसके अलावा किसी अन्य संदर्भ में अपरिभाषित चर का उपयोग करने पर त्रुटि मिलेगीtypeof
।
अद्यतन: ऊपर दिए गए उत्तर का उद्धरण भ्रामक हो सकता है। इसे «अपरिभाषित चर» के बजाय «एक अघोषित चर» कहना चाहिए ।
जैसा कि मुझे पता चला, रेयान found , मैरिकिक्स और नेलनहोफ़ के जवाबों में , यहां तक कि जब किसी फ़ंक्शन के लिए कोई तर्क प्रदान नहीं किया जाता है, तो तर्क के लिए इसके चर हमेशा घोषित होते हैं। यह तथ्य भी नीचे दी गई सूची में पहले आइटम को गलत साबित करता है।
मेरी समझ से, निम्नलिखित परिदृश्यों का अनुभव किया जा सकता है:
फ़ंक्शन को बिना किसी तर्क के बुलाया गया था, इस प्रकारdata
एक अपरिभाषित चर बनाते हुए , और एक त्रुटि को बढ़ाते हुएdata != null
।फ़ंक्शन को विशेष रूप से
null
(याundefined
) इसके तर्क के रूप में कहा जाता था , जो मामले मेंdata != null
पहले से ही आंतरिक कोड की रक्षा करता है,&& data !== undefined
बेकार प्रतिपादन करता है ।फ़ंक्शन को एक गैर-शून्य तर्क के साथ बुलाया गया था, जिस स्थिति में यह तुच्छ रूप से दोनों को पारित करेगा
data != null
औरdata !== undefined
।
प्रश्न: क्या मेरी समझ सही है?
मैंने फ़ायरफ़ॉक्स के कंसोल में निम्नलिखित कोशिश की है:
--
[15:31:31.057] false != null
[15:31:31.061] true
--
[15:31:37.985] false !== undefined
[15:31:37.989] true
--
[15:32:59.934] null != null
[15:32:59.937] false
--
[15:33:05.221] undefined != null
[15:33:05.225] false
--
[15:35:12.231] "" != null
[15:35:12.235] true
--
[15:35:19.214] "" !== undefined
[15:35:19.218] true
मैं एक ऐसे मामले का पता नहीं लगा सकता जहाँ data !== undefined
बाद data != null
में किसी काम का हो।
if(data)
का अर्थ यह होगा कि वह पास नहीं कर सकता false
या इसके 0
लिए मान के रूप में नहीं data
।
if(typeof someUndefVar == whatever) -- works
और if(someUnderVar) -- error
।
data !== null && data !== undefined
, data != null
जो इसके बराबर है data != undefined
। पूर्व प्रपत्र को पसंदीदा माना जाता है क्योंकि यह शर्तों के बारे में अधिक स्पष्ट है, जबकि यह अनदेखी करना आसान होगा कि दोनों को null
और undefined
बाद की दो स्थितियों के साथ जाँच की जा रही है।
undefined
आईएमओ एक कोड गंध के लिए स्पष्ट परीक्षण हैं। यह एक संरक्षित कीवर्ड नहीं है null
, यह एक ऐसा वेरिएबल है जो अपरिभाषित होता है। यह पूरी तरह से वैध है और आपके कोड को तोड़ने वाला है:undefined = 1
if (data)
। यह जाँचने का जावास्क्रिप्ट तरीका है किdata
चर सही का मूल्यांकन करता है या नहीं।undefined
,null
झूठी, 0, खाली स्ट्रिंग, खाली सरणी और (?) कोई गुण नहीं है जिसके साथ कोई गुण गलत का मूल्यांकन नहीं करता है, बाकी सच है।