Null
In JavaScript, null is a primitive value that represents the intentional absence of any object value. It is one of JavaScript's falsy values, meaning it evaluates to false in boolean contexts. However, it is distinct from undefined, which represents a variable that has been declared but has not been assigned a value.
- null is a special primitive value, but when you check its type using typeof, it returns "object".
null is used when a variable is expected to hold an object but currently doesn't have one. It signals the intentional absence of a value.
let person = null; // The `person` variable explicitly has no value.
Used when you intentionally want to signify "no value" or "empty."
Undefined
In JavaScript, undefined is a primitive value automatically assigned to variables that have been declared but not yet assigned a value.
- undefined is a primitive type in JavaScript. It refers to variables that have been declared but not initialized, and its typeof will correctly reflect "undefined".
let x;
console.log(typeof x); // "undefined"
Difference Between null and undefined
In this example, uninitializedVariable is undefined because it hasn't been assigned any value.
Meanwhile, objectWithNoValue is explicitly set to null, signaling that it should hold an object, but currently it doesn’t.
Comparison
-
Loose equality (==)
null and undefined are loosely equal because they both represent an "empty" value.
console.log(null == undefined); // true
-
Strict equality (===)
They are not strictly equal because they are different types.
console.log(null == undefined); // true