Undefined vs Null in JavaScript: Key Differences and Usage
undefined means a variable has been declared but not assigned a value, while null is an explicit assignment representing "no value" or "empty". Both indicate absence of a meaningful value but are used differently in JavaScript.Quick Comparison
Here is a quick side-by-side comparison of undefined and null in JavaScript.
| Aspect | undefined | null |
|---|---|---|
| Type | Primitive value representing uninitialized variable | Primitive value representing intentional absence of any object value |
| Default value | Yes, for uninitialized variables or missing function arguments | No, must be explicitly assigned |
| Meaning | Variable declared but not assigned | Variable explicitly set to "no value" |
| Typeof result | "undefined" | "object" (a known JavaScript quirk) |
| Use case | Indicates missing or uninitialized data | Indicates intentional empty or nullified value |
| Equality with each other | == equal to null | == equal to undefined |
Key Differences
undefined is the default state of variables that are declared but not given a value. For example, if you write let x;, then x is undefined. It also appears when a function does not return a value or when you access a property that does not exist.
On the other hand, null is a value that you assign to a variable to indicate that it intentionally has no value. It is a way to clear or reset a variable. Unlike undefined, null must be explicitly set.
Another difference is their types: typeof undefined returns "undefined", while typeof null returns "object", which is a historical quirk in JavaScript. Despite this, they are both falsy values but serve different semantic purposes in code.
Code Comparison
let a; console.log('a:', a); // a is declared but not assigned console.log('typeof a:', typeof a); function test() {} console.log('test() returns:', test()); let obj = {}; console.log('obj.missingProp:', obj.missingProp);
null Equivalent
let b = null; console.log('b:', b); console.log('typeof b:', typeof b); b = 'hello'; console.log('b after assignment:', b); b = null; console.log('b reset to null:', b);
When to Use Which
Choose undefined when a variable or property has not been initialized or is missing naturally, such as default states or absent function arguments. It signals that something is not yet set.
Choose null when you want to explicitly indicate that a variable should have no value, like resetting data or marking an intentional empty state. It is a clear way to say "no value here".
Using them correctly helps make your code clearer and easier to debug.
Key Takeaways
undefined means a variable exists but has no assigned value yet.null is an explicit assignment meaning "no value" or "empty".typeof undefined is "undefined", but typeof null is "object".undefined for uninitialized variables and null for intentional empty values.undefined == null is true, but they are not strictly equal (===).