2011-12-15 23 views
9

मुझे अपना कोड चाहिए ताकि यदि कोई विशिष्ट var मौजूद हो तो यह एक क्रिया करेगा, अन्यथा इसे अनदेखा कर दिया जाएगा और आगे बढ़ेगा। मेरे कोड के साथ समस्या यह है कि, यदि विशिष्ट var मौजूद नहीं है तो यह एक त्रुटि का कारण बनता है, संभवतः जावास्क्रिप्ट कोड के शेष को अनदेखा कर रहा है।जावास्क्रिप्ट यदि var मौजूद है

उदाहरण

var YouTube=EpicKris; 

if ((typeof YouTube) != 'undefined' && YouTube != null) { 
    document.write('YouTube:' + YouTube); 
}; 
+0

संभावित डुप्लिकेट [जावास्क्रिप्ट में एक अपरिभाषित ऑब्जेक्ट प्रॉपर्टी का पता लगाना] (http://stackoverflow.com/questions/27509/detecting-an-undefined-object-property-in-java स्क्रिप्ट) –

उत्तर

3

कोड:

var YouTube=EpicKris; 

if (typeof YouTube!='undefined') { 
    document.write('YouTube:' + YouTube); 
}; 

बाहर काम किया के लिए सबसे अच्छी विधि यह, यह जांचने के लिए टाइप करें कि var मौजूद है या नहीं। यह मेरे लिए पूरी तरह से काम किया।

7
try { 
    if(YouTube) { 
    console.log("exist!"); 
    } 
} catch(e) {} 
console.log("move one"); 

काम करेंगे जब यूट्यूब, अशक्त अपरिभाषित, नहीं है 0 या ""।

क्या यह आपके लिए काम करता है?

+0

तो यदि var YouTube = EpicKris; अस्तित्व में नहीं था या यदि var YouTube = null; या यूट्यूब = 0; तो कोई त्रुटि नहीं होनी चाहिए और बाकी जावास्क्रिप्ट कोड चलाना चाहिए? –

+0

ऊपर, मेरे जवाब को अनदेखा करें, छोटी गाड़ी है, गुरंग बेहतर है! – Chango

+0

ठीक है, मैंने इसे गुरुंग के उत्तर के साथ तय किया है। अब जब तक यूट्यूब मौजूद है तब तक यह कोड निष्पादित करेगा और शून्य, 0 या खाली स्ट्रिंग नहीं है। क्या यह उत्तर आपके लिए काम करता है? – Chango

6

यह एक क्लासिक है।

अपरिभाषित चर पर क्रॉस ब्राउज़र चेक के लिए "विंडो" क्वालीफायर का उपयोग करें और ब्रेक नहीं होगा।

if (window.YouTube) { // won't puke 
    // do your code 
} 

या मूंगफली गैलरी से हार्ड कोर sticklers के लिए ...

if (this.YouTube) { 
    // you have to assume you are in the global context though 
} 
+3

यदि आप एक अलग दायरे में हैं तो यह काम नहीं करेगा। मैं ऐसा करने की सिफारिश नहीं करता हूं। – regality

+0

हां, मुझे किसी भी ऑब्जेक्ट क्वालीफायर को रूट के रूप में भी उल्लेख करना चाहिए था, कहता है कि आपके पास ऑब्जेक्ट "कुछ = {}" है, फिर आप जांचें कि "something.x" या तो प्यूक नहीं करेगा। खिड़की.myThing = window.myThing || जैसे बूस्ट्रैपिंग प्लगइन्स लिखते समय मुझे यह करना पड़ा {}; आदि आदि।IE के लिए असली कारण है क्योंकि आईई को मंद किया गया है, यहां तक ​​कि v9 पर भी। –

+0

तो यदि var YouTube = EpicKris; अस्तित्व में नहीं था तो कोई त्रुटि नहीं होनी चाहिए और बाकी जावास्क्रिप्ट कोड चलाना चाहिए? –

1

के बारे में क्या का उपयोग कर try/catch:

try { 
    //do stuff 
} catch(e) { /* ignore */ } 
+0

क्या आप इसे मुझे समझा सकते हैं? –

+0

@ क्रिस्टियन मैथ्यूज: इसे देखें: http://jsfiddle.net/BGurung/deRvV/3/ –

+0

यह दृष्टिकोण हर जगह काम करता है लेकिन यह कहने के बराबर है "मुझे नहीं पता कि यह कैसे काम करता है इसलिए मैं कुछ डालूंगा वहां कोड "। यह तब किया जाना चाहिए जब आप जानते हैं कि कुछ मामलों में उपयोगकर्ता या नेटवर्क या आपके नियंत्रण से बाहर कुछ के आधार पर कुछ विफल हो सकता है। आम तौर पर उन चीज़ों को नहीं जिन्हें आप समझते हैं कि वे क्यों टूटते हैं और आपके नियंत्रण में हैं। –

0

मुझे इस पर विश्वास है क्या आप के लिए देख जा सकता है:

if (typeof(YouTube)!=='undefined'){ 
    if (YouTube!==undefined && YouTube!==null) { 
     //do something if variable exists AND is set 
    } 
} 
0

यह आसान है ... आप 2 तरीके

var YouTube = window["EpicKris"] ;// or this["EpicKris"] or objectContainer["EpicKris"] 

if(YouTube) { //if is null or undefined (Zero and Empty String too), will be converted to false 

    console.log(YouTube);// exists 

}else{ 

    consol.log(YouTube);// null, undefined, 0, "" or false 

} 

या पर यह कर सकते हैं आप हो सकता है

var YouTube = window["EpicKris"] ;// or this["EpicKris"] or objectContainer["EpicKris"] 

if(typeof YouTube == "undefined" || YouTube == null) { //complete test 

    console.log(YouTube);//exists 

}else{ 

    console.log(YouTube);//not exists 

} 
संबंधित मुद्दे