Ох уж этот 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
}