Javascript: проверка длины дочернего массива объекта, даже если объект не определен
Я хотел бы отображать некоторый контент только в том случае, если дочерний массив объекта содержит элементы в нем. Но иногда сам объект не определен, поэтому это не удается, если object или object.child не присутствует в области: 
if(object.child.length){
    alert('hello world');
}
В результате чего:
Uncaught ReferenceError: object is not defined
Поэтому я должен добавить два дополнительных условия if, чтобы проверить, определен ли объект и его потомок:
if(typeof object !== 'undefined'){
    if(typeof object.child !== 'undefined'){
        if(object.child.length){
            alert('hello world');
        }
    }
}
Написать функцию вокруг этого тоже проблематично:
function isset(value){ ... }
if(isset(object.child.length)({ ... } // <-- still raises error that object is not defined
1 ответ:
Вы можете поставить охрану:
Вышеизложенное защищает отif(object && object.child && object.child.length){objectиobject.childбытияundefinedилиnull(или любого другого ложного значения); это работает, потому что все ссылки на не-nullобъекты истинны, поэтому вы можете избежать многословной формыtypeof object !== "undefined". Возможно, Вам не понадобятся оба вышеперечисленных охранника, если вы точно знаете, чтоobject.childбудет существовать, еслиobjectсуществует. Но иметь и то и другое безвредно. Стоит отметить, что это полезно даже при извлечении значений, а не только для их тестирования. Например, предположим, у вас есть (А может, и нет!)object.foo, который содержит значение, которое вы хотите использовать.var f = object && object.foo;Если
objectявляется falsey (undefinedилиnullявляются типичными случаями), тоfполучит это значение falsey (undefinedилиnull). Еслиobjectистинно, тоfполучит значениеobject.foo.
||являетсяудивительно мощным подобным образом.