The behavior you are seeing is because of chain '.' handling of null objects. For example if you:
It will succeed and return "", but if you:
It will fail with an INVALID OREF error, as would 'Write (person.Name).AnythingYouLike'.
This behavior is inconsistent, so I will not defend it, but it is how the product works.