मैं जाँच कर रहा हूँ if(response[0].title !== undefined)
, लेकिन मुझे त्रुटि मिली:
अनक्रेड टाइप टाइप: अपरिभाषित की संपत्ति 'शीर्षक' नहीं पढ़ सकते हैं।
मैं जाँच कर रहा हूँ if(response[0].title !== undefined)
, लेकिन मुझे त्रुटि मिली:
अनक्रेड टाइप टाइप: अपरिभाषित की संपत्ति 'शीर्षक' नहीं पढ़ सकते हैं।
जवाबों:
response[0]
परिभाषित नहीं किया गया है, अगर यह परिभाषित है और फिर इसकी संपत्ति के शीर्षक के लिए जाँच करें।
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefined
नहीं है क्योंकि यह एक जावास्क्रिप्ट कीवर्ड नहीं है (हालांकि हर कोई लगता है कि यह है)। यदि आप चाहते हैं, तो आप नामक एक चर बना सकते हैं undefined
और फिर यह चेक गलत होगा। जाँच करने का एकमात्र सही तरीका है (typeof myVar !== 'undefined')
।
undefined
?
बस जाँच करें कि response[0]
क्या अपरिभाषित है:
if(response[0] !== undefined) { ... }
यदि आपको अभी भी शीर्षक की स्पष्ट रूप से जांच करने की आवश्यकता है, तो प्रारंभिक जांच के बाद ऐसा करें:
if(response[0] !== undefined && response[0].title !== undefined){ ... }
मुझे उपरोक्त सभी अन्य कोड उदाहरणों से परेशानी थी। क्रोम में, यह वह शर्त थी जो मेरे लिए काम करती थी:
typeof possiblyUndefinedVariable !== "undefined"
मुझे अन्य ब्राउज़रों में परीक्षण करना होगा और देखना होगा कि मैं कैसे चीजें ग्रहण करता हूं।
undefined
कि एक स्ट्रिंग होना था।
वास्तव में आपको इसे एक कोशिश / पकड़ ब्लॉक के साथ घेरना होगा ताकि आपका कोड काम करने से न रोके। ऐशे ही:
try{
if(typeof response[0].title !== 'undefined') {
doSomething();
}
}catch(e){
console.log('responde[0].title is undefined');
}
प्रकार का:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
यह होगा क्योंकि response[0]
खुद अपरिभाषित है।
आपको पहले जांचना होगा कि क्या response[0]
अपरिभाषित है, और केवल अगर यह नहीं है, तो बाकी की जांच करें। इसका मतलब है कि आपके मामले में, response[0]
अपरिभाषित है।
मुझे पता है कि मैं यहां 7 महीने देरी से गया था, लेकिन मुझे यह सवाल मिला और यह दिलचस्प लग रहा है। मैंने अपने ब्राउज़र कंसोल पर यह कोशिश की।
try{x,true}catch(e){false}
यदि चर x अपरिभाषित है, तो त्रुटि पकड़ ली जाती है और यह गलत होगा, यदि नहीं, तो यह सच हो जाएगा। तो आप वैरिएबल फंक्शन का उपयोग किसी वैरिएबल पर वैल्यू सेट करने के लिए कर सकते हैं
var isxdefined = eval('try{x,true}catch(e){false}')
इनमें से कुछ उत्तरों में एक बुनियादी गलतफहमी है कि कैसे उपयोग किया जाए typeof
।
ग़लत
if (typeof myVar === undefined) {
सही बात
if (typeof myVar === 'undefined') {
कारण यह है कि typeof
एक स्ट्रिंग लौटाता है। इसलिए, आपको यह देखना चाहिए कि इसने स्ट्रिंग को "अपरिभाषित" के बजाय वापस लौटा दिया है undefined
(उद्धरण चिह्नों में संलग्न नहीं), जो स्वयं जावास्क्रिप्ट के आदिम प्रकारों में से एक है । typeof
ऑपरेटर प्रकार का मान प्रदान कभी नहीं होगा undefined
।
परिशिष्ट
यदि आप गलत तुलना का उपयोग करते हैं तो आपका कोड तकनीकी रूप से काम कर सकता है, लेकिन संभवत: उस कारण के लिए नहीं जो आप सोचते हैं। undefined
जावास्क्रिप्ट में कोई preexisting चर नहीं है - यह किसी प्रकार का जादू कीवर्ड नहीं है जिससे आप चीजों की तुलना कर सकते हैं। आप वास्तव में नामक एक चर बना सकते हैं undefined
और इसे कोई भी मूल्य दे सकते हैं जिसे आप पसंद करते हैं।
let undefined = 42;
और यहां एक उदाहरण दिया गया है कि पहली विधि गलत साबित करने के लिए आप इसका उपयोग कैसे कर सकते हैं: