There's another set of operators that all return a Boolean value as a result of the operation. These are the comparison operators. The following table lists them together with example uses:
Note that NaN
is not equal to anything, not even itself:
> NaN == NaN;
false
If you try to use a non-existing variable, you'll get an error:
> foo;
ReferenceError: foo is not defined
Using the typeof
operator on a non-existing variable is not an error. You get the string "undefined"
back:
> typeof foo;
"undefined"
If you declare a variable without giving it a value, this is, of course, not an error. But, the typeof
still returns "undefined"
:
> var somevar;
> somevar;
> typeof somevar;
"undefined"
This is because when you declare a variable without initializing it, JavaScript automatically initializes it with the value undefined
:
> var somevar;
> somevar === undefined;
true
The null
value, on the other hand, is not assigned by JavaScript behind the scenes; it's assigned by your code:
> var somevar = null; null > somevar; null > typeof somevar; "object"
Although the difference between null
and undefined
is small, it could be critical at times. For example, if you attempt an arithmetic operation, you get different results:
> var i = 1 + undefined; > i; NaN > var i = 1 + null; > i; 1
This is because of the different ways null
and undefined
are converted to the other primitive types. The following examples show the possible conversions:
> 1 * undefined; NaN > 1 * null; 0
> !!undefined; false > !!null; false
> "value: " + null; "value: null" > "value: " + undefined; "value: undefined"
18.227.114.125