DEV Community

Cover image for Null vs Undefined - Everything you need to know
Arafat
Arafat

Posted on

Null vs Undefined - Everything you need to know

In JavaScript, null and undefined are special values that represent the absence of a value or a null reference. It can be a bit confusing when it comes to a variable not having a value because it can be null or undefined. So in this article, I will break down the difference between null and undefined.

Null vs Undefined

To start with, let me explain the similarities that they have. Both null and undefined represents that a variable has no value. If a variable has no value, it is either set to null or undefined, and the same goes for a function. If a function returns null or undefined, then this means that function has nothing to return.

In JavaScript, null and undefined are considered loosely equal to each other, which means that the following expression will evaluate to true as it is compared with ==:

null == undefined // true
null === undefined // false
Enter fullscreen mode Exit fullscreen mode

These are all the similarities that null and undefined have. Now lets begin the difference between them.

Null

As I said earlier, null is a way to indicate that a variable has no value. However, null is an intentional assignment value, meaning that it is not a default value and must be explicitly assigned. You can think of it as a placeholder that indicates that a value is not yet known or has not been set. So a varaible can never be null unless a programmer set the value to null.

Here is an example that demonstrates the statement:

let x;
console.log(x); // Output: undefined

let y = null;
console.log(y); // Output: null
Enter fullscreen mode Exit fullscreen mode

This is essential to know because when you see a returned null value, you can be sure that the programmer who wrote the code is trying to tell you that there is no value to show or return. A great example of where null is useful is in something like a read function that queries a database for an entry. If no entry exists, it makes the most sense to return null since you are stating that no value is found.

Undefined

undefined, on the other hand, is a value that is assigned to a variable that has not been initialized, or to an object property that does not exist. It is a default value, and it is assigned to a variable when it is declared but not assigned a value.

Here are a few examples:

let x;
console.log(x); // Output: undefined

let y = null;
console.log(y); // Output: null

let z = {};
console.log(z.prop); // Output: undefined
Enter fullscreen mode Exit fullscreen mode

In the first example, the variable x is declared but not initialized, so it is assigned the value undefined. In the second example, the variable y is explicitly assigned the value null. In the third example, the object z does not have a property called prop, so accessing it returns undefined.

This is where this gets a bit confusing as you can set a variable to undefined also.

let x = null

console.log(x)
// null

x = undefined

console.log(x)
// undefined
Enter fullscreen mode Exit fullscreen mode

You should do this to reset a variable essentially. By setting a variable to undefined, you convey that the variable no longer contains any helpful information. If the value is null, then you explicitly say the result of some action has no value.

Technically, these both indicate no value, but they express that message in slightly different ways.


Conclusion

It's important to note that null and undefined are not the same thing, and they should not be used interchangeably. null is an intentional assignment value, while undefined is a default value that is assigned when a variable is not initialized or an object property does not exist.

Top comments (0)