Ох уж этот js... Сегодня снова пришлось углубиться в дебри JS и снова эти ужасные typeof и undefined... От одной мысли меня передёргивает. Мы же в 21ом веке живем!!! Что творится в javascript ?

if (typeof window.var1 !== 'undefined' && typeof window.var1.var2 !== 'undefined' && typeof window.var1.var2.var3 !== 'undefined') {
  // code
}

Знакомая ситуация?

Следующее решение не претендует на премию Тьюринга или ВОИС, но работает стабильно.

function isset(base, variable) {
  var isset = false, path;
  if (typeof base !== 'undefined' && typeof variable !== 'undefined') {
    path = variable.split('.');
    if (path.length) {
      for (var i in path) {
        if (path.hasOwnProperty(i)) {
          if(typeof base[path[i]] === 'undefined'){
            console.log('undefined ' + path[i]);
            return false;
          }
          else {
            base = base[path[i]];
          }
        }
      }
      isset = true;
    }
  }
  return isset;
}

Теперь условие из первого блока кода в этой статье можно сократить до следующих строк:

if (isset(window, 'var1.var2.var3')) {
  // code
}

Другие посты