Мои предпочтения typeof(elem) != 'undefined' && elem != null
.
Как бы вы ни выбрали, подумайте над тем, чтобы поставить проверку в такой функции:
function existy (x) {
return typeof (x) != 'undefined' && x != null;
}
Если вы не знаете, объявлена ли переменная, продолжайте с typeof (x) != 'undefined' && x != null;
Если вы знаете, что переменная объявлена, но может не существовать, вы можете использовать
existy(elem) && doSomething(elem);
Переменная, которую вы проверяете, иногда может быть вложенным свойством.Вы можете использовать опору ||{} чтобы пройти строку, проверяя существование рассматриваемого свойства:
var exists = ((((existy(myObj).prop1||{}).prop2||{}).prop3||{})[1]||{}).prop4;
После каждого свойства используйте (... '|| {}'). nextProp, чтобы отсутствующее свойство не бросалоошибка.
Или вы можете использовать, как existy(o) && existy(o.p) && existy(o.p.q) && doSomething(o.p.q)