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