null vs undefined

Differences

  1. undefined indicates that a variable has been declared but not been assigned to any value, including null.

    let foo;
    console.log(foo); // undefined

    null is used to indicate that a variable doesn't have a value.

    let foo = null;
    console.log(foo); // null
  2. undefined and null are considered to be different types.

    undefined is a type itself, whereas null is a special value of object.

    console.log(typeof undefined);  // 'undefined'
    console.log(typeof null); // 'object'

    Since they are different types, here are the result of equality and identity operators when comparing them to each other:

    null == undefined;      // true
    null === undefined; // false

Good to know

JSON.stringify omits undefined, but keeps null:

JSON.stringify({
name: 'John',
address: null,
age: undefined,
});

// {"name":"John","address":null}