Use apenas null se você deseja explicitamente denotar o valor de uma variável como "sem valor". Como @com2gz afirma: null é usado para definir algo programaticamente vazio. undefined significa que a referência não existe. Um valor nulo tem uma referência definida para "nada ".
Quando você deve usar o elemento nulo?
Quando uma variável ou uma propriedade em um objeto não tem um valor ela é indefinida, e para um valor ser nulo você precisa atribuir um valor nulo. Como a variável já não tem valor não faz sentido declarar isso novamente com outro tipo que no final tenha o mesmo significado.
É má prática retornar undefined?
Uma função retorna indefinida se um valor não foi retornado. Nota: Embora você possa usar undefined como um identificador (nome da variável) em qualquer escopo diferente do escopo global (porque undefined não é uma palavra reservada), isso é uma péssima ideia que dificultará a manutenção e a depuração do seu código.
Is null==indefinido?
null é um valor atribuído. Significa nada. undefined significa que uma variável foi declarada, mas ainda não definida.
Por que null==undefined é verdade?
O operador de comparação==não verifica os tipos. null e undefined retornam false. É por isso que seu código está na verdade verificando se false é igual a false. No entanto, seus tipos não são iguais.