Qual a diferença entre "NULL" e "UNDEFINED"?

Em resumo, "undefined" significa que uma variável foi declarada, mas não foi inicializada com um valor. Já "null" é um valor atribuído intencionalmente para indicar que uma variável não tem um valor definido.

Exemplos:

let x; console.log(x); // Variável não foi Declarada. RESULTADO: undefined

let y = null; console.log(y); // Variável foi Declarada como NULL(Nula). RESULTADO: null

Complementando, undefined também pode ocorre nos casos em que você tenta acessar propriedades que não existem, por exemplo:

let array = [1, 2, 3]; // array com 3 elementos
console.log(array[10]); // undefined, pois o array não tem elemento na posição 10

let obj = { nome: 'Fulano' };
console.log(obj.idade); // undefined, obj não tem a propriedade "idade"

Claro que tem algumas pegadinhas. Por exemplo, se o objeto tiver uma propriedade, mas o valor dela for undefined, tem tomar cuidado na hora de verificar se ela existe:

let obj = { nome: 'Fulano' };

console.log(obj.idade); // undefined, obj não tem a propriedade "idade"
// false, pois obj não tem a propriedade "idade"
console.log(obj.hasOwnProperty('idade'));

obj.idade = undefined; // agora objeto tem a propriedade "idade"
console.log(obj.hasOwnProperty('idade')); // true, agora obj tem a propriedade "idade"
console.log(obj.idade); // mas o valor continua sendo undefined

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. ~~~js let a // nesse momento, a variável existe, mas não há valor atribuído a ela ~~~

Interessante a leitura e a discussão posterior! realmente é algo que pode passar batido. Massa!