What is the difference between null, undefined and undeclared in JavaScript?
January 25, 2023
The difference between null, undefined and undeclared
undefined
means that the value has not yet been defined, so when a variable is declared but not assigned any value, the variable will be undefined
, which can be understood as "not yet".
null
represents the empty value of a variable, which can be understood as "nothing".
undefined
and null
are both primitive data types in JavaScript, just like any other primitive data types, such as: string
, number
, can be assigned to the variable. Both have different meanings in use.
For example, when the front-end wants to request data from the back-end, because it needs to wait for the data to be returned, a certain variable may be undefined
at the beginning, and when the data was responded, it will change to the corresponding data type.
In the following example, we have a variable users
, define its type as
UserDTO[] | undefined
instead of
UserDTO[] | null
because before getting the data, users
is "Not yet".
type UserDTO = {
id: string;
firstName: string;
lastName: string;
profilePicture: string | null;
};
const users: UserDTO[] | undefined = await fetchUsers();
Vice versa, in the above example, when users
is obtained, some users do not have a profile picture, because it is "none", so the type of profilePicture
is
profilePicture: string | null;
instead of
profilePicture: string | undefined;
undeclared
is often compared with undefined
. undefined
means that it has been declared as a defined value, but undeclared
means that it has never been declared.
When a variable has not been declared using var
, let
or const
, it is called undeclared. If we try to call this variable, a ReferenceError
error will be reported.
console.log(x); // Uncaught ReferenceError: x is not defined