- Object-Oriented JavaScript(Second Edition)
- Stoyan Stefanov Kumar Chetan Sharma
- 297字
- 2021-08-13 16:19:28
Comparison
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
Undefined and null
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:
- Conversion to a number:
> 1 * undefined; NaN > 1 * null; 0
- Conversion to a Boolean:
> !!undefined; false > !!null; false
- Conversion to a string:
> "value: " + null; "value: null" > "value: " + undefined; "value: undefined"
- Mobile Application Development:JavaScript Frameworks
- LabVIEW 2018 虛擬儀器程序設計
- Visual C++程序設計學習筆記
- 數(shù)據(jù)庫原理及應用(Access版)第3版
- 精通軟件性能測試與LoadRunner實戰(zhàn)(第2版)
- Implementing Cisco Networking Solutions
- 匯編語言程序設計(第3版)
- Gradle for Android
- RISC-V體系結構編程與實踐(第2版)
- Keras深度學習實戰(zhàn)
- 第一行代碼 C語言(視頻講解版)
- Swift 4從零到精通iOS開發(fā)
- Arduino電子設計實戰(zhàn)指南:零基礎篇
- Implementing Microsoft Dynamics NAV(Third Edition)
- 面向物聯(lián)網(wǎng)的Android應用開發(fā)與實踐