What is the difference between null, undefined and undeclared in JavaScript?
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[] | undefinedinstead of
UserDTO[] | nullbecause 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