JavaScript, если существует - PullRequest
9 голосов
/ 16 декабря 2011

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

Пример

var YouTube=EpicKris;

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

Ответы [ 6 ]

7 голосов
/ 16 декабря 2011
try {
  if(YouTube) {
    console.log("exist!");
  }
} catch(e) {}
console.log("move one");

Будет работать, если YouTube не имеет значения null, undefined, 0 или "".

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

6 голосов
/ 16 декабря 2011

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

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

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

ИЛИ для жестких сердечников из арахисовой галереи ...

if (this.YouTube) {
    // you have to assume you are in the global context though 
}
3 голосов
/ 18 декабря 2011

Код:

var YouTube=EpicKris;

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

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

1 голос
/ 16 декабря 2011

Как насчет использования try/catch:

try {
    //do stuff
} catch(e) { /* ignore */ }
0 голосов
/ 17 апреля 2013

это просто ... вы можете сделать это двумя способами

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

}
0 голосов
/ 06 апреля 2013

Я думаю, это то, что вы можете искать:

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