I'd say it is a design smell and not necessarily code smell. Any API or data interface should try to keep "optional keys" at a minimum.
Depending on the language, `a.b && ...` could be checking either or both of the following:
- does `a` have key 'b'? - is `a.b` truthy?