Para programar, iniciamos pela declaração e depois pela atribuição de valor a uma variavel. undefined é uma excessão caracterizada pela tentativa de uso de uma variável sem declaração. Null é o conteúdo ou valor para uma variavel sem valor atribuído. As duas situações são resolvidas com uma programação disciplinada, independente da linguagem.
undefined é uma excessão caracterizada pela tentativa de uso de uma variável sem declaração.
Acredito que não seja o caso de variável sem declaração, mas sim sem atribuição de valor.
let a
// nesse momento, a variável existe, mas não há valor atribuído a ela