The way I always see it is that `null` is for known unknowns, and `undefined` is for unknown unknowns.
Explicitly defining something as `undefined` is paradoxical and IMO should never be done. I've tried to explain this concept to some co-workers without much lasting success, but it's a pretty common concept to other languages.
Undefined should basically never be used as a value directly.