Oi, Kaique, tudo bem?
O null é um valor que representa a ausência intencional de valor, ou seja, quando você atribui o valor null a uma variável, está dizendo explicitamente que não há valor ali. Por exemplo, se você tem uma variável input e atribui null a ela, está indicando que não há informação disponível.
Por outro lado, o undefined é um valor que representa a ausência de valor por falta de inicialização. Quando uma variável é declarada, mas não recebe nenhum valor, ela é automaticamente atribuída como undefined. Ou seja, é uma ausência de valor não intencional. Por exemplo, se você declara uma variável input2 sem atribuir nenhum valor, ela será automaticamente undefined.
Com dito acima, tanto nullcomo undefined definem a ausência de valor, e os operadores de comparação do JavaScript podem identificar as diferenças entre eles ou não.
No caso do uso do operador de comparação abstrata (==), o null e o undefined retornam true nessa igualdade, pois esse operador compara os valores após fazer conversões de tipo, se necessário. Já o operador de igualdade estrita (===) retorna false, pois a comparação só é verdadeira se os valores e os tipos forem iguais.
Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!