When an undeclared variable is used, or a variable that has been declared but not assigned a value is used, or an object property that does not exist is used, this value is returned.
Although undefined and null are not the same, the == operator treats the two as equal, such as
my.prop == null
If the attribute prop does not exist, or it exists but the value is null, then the value of this expression is true.
When an undefined value is used in a boolean environment, it is converted to false, when it is used in a numeric environment, it is converted to NaN, and when it is used in a string environment, it is converted to "undefined"