2011-12-15 2 views
9

Я хочу, чтобы мой код так, чтобы, если существует определенный var, он выполнит действие, иначе он будет проигнорирован и перемещаться. Проблема с моим кодом заключается в том, что если конкретный var не существует, он вызывает ошибку, предположительно игнорируя остальную часть кода JavaScript.JavaScript, если существует var

Пример

var YouTube=EpicKris; 

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

Возможный дубликат [Обнаружение свойства неопределенного объекта в JavaScript] (http://stackoverflow.com/questions/27509/detecting-an-undefined-object-property-in-java скрипт) –

ответ

3

Код:

var YouTube=EpicKris; 

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

Разработал лучший метод для это, используйте typeof, чтобы проверить, существует ли var. Это отлично сработало для меня.

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

бы работать, если YouTube не является нулевым, неопределенным, 0 или "".

Это работает для вас?

+0

Итак, если var YouTube = EpicKris; не существует или var var = null; или YouTube = 0; то ошибки не должно возникать, а остальная часть кода JavaScript должна выполняться? –

+0

Упс, проигнорируйте мой ответ, глючит, gurung лучше! – Chango

+0

Ну, я исправил это с ответом гурунга. Теперь он будет выполнять код до тех пор, пока YouTube существует и не является нулевым, 0 или пустой строкой. Этот ответ работает на вас? – Chango

6

Это классический.

Используйте «оконный» квалификатор для проверки кросс-браузера по неопределенным переменным и не сломается.

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

ИЛИ для твердой сердцевины блюстителей из арахиса галереи ...

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

Это не сработает, если вы находитесь в другом пространстве. Я не рекомендую это делать. – regality

+0

Да, я должен был также упомянуть, делая любой классификатор объектов, так как root говорит, что у вас есть объект «something = {}», тогда вы проверяете, не «ли что-то». Я должен был сделать это при написании плагинов с расширением, таких как window.myThing = window.myThing || {}; и т.д.IE является реальной причиной этого, поскольку IE отстает, даже на v9. –

+0

Итак, если var YouTube = EpicKris; не существовало, тогда ошибки не возникали, а остальная часть кода JavaScript должна выполняться? –

1

Что об использовании try/catch:

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

Не могли бы вы объяснить это мне? –

+0

@ KristianMatthews: Смотрите это: 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 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^