मैं निम्नलिखित कोड भर में आया हूं:
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, खाली स्ट्रिंग, खाली सरणी और (?) कोई गुण नहीं है जिसके साथ कोई गुण गलत का मूल्यांकन नहीं करता है, बाकी सच है।