Why is `0` handled differently than `undefined`?