Values in Javascript can come from
- Object – object reference
- String – immutable, 16-bit USC-2
- Boolean –
true,false - Number – only 64-bit floating point, IEEE 754 (double)
null– empty object referenceundefined– unassigned variables and function arguments, missing object properties
Boolean evaluation of values using == and != operators
Values that are interpreted as false:
falsenullundefined""– the empty string0– the number 0NaN– not a number, result of undefined math operation
All other values and objects are interpreted as true.
Working with comparison operators
The == and != operators will do implicit type conversion of it’s arguments to match their type. Since the null and undefined values are both equal with these operators, errors can occur when a missing object property is used in a null-comparison.
By using the === and !== operators, no implicit type conversion will be done. The values null and undefined are not equal using these operators. These operators can be used to check against missing properties and unassigned arguments among other.
Notice: Be careful if updating your old javascript code with === and !== for null-comparison tests. It might be that an undefined-comparison should have been used instead (or both). Failure to recognise these cases can introduce hard-to-catch errors.