Если вы ожидаете определенного условия, ваш код будет легче поддерживать, если вы явно протестируете его. Я бы написал выше как что-то вроде
if( myInfo && newInfo
&& myInfo.person && newInfo.person
&& myInfo.person.address && newInfo.person.address
&& ( myInfo.person.name == newInfo.person.name
&& myInfo.person.address.street == newInfo.person.address.street
&& myInfo.person.address.zip == newInfo.person.address.zip
)
)
{
this.setAddress(newInfo);
}
Это делает эффект намного более ясным - например, предположим, что newInfo полностью заполнен, но части myInfo отсутствуют? Возможно, вы действительно хотите, чтобы setAddress () вызывался в этом случае? Если это так, вам нужно изменить эту логику!