- 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"
- C語言程序設計(第3版)
- Scratch 3游戲與人工智能編程完全自學教程
- TypeScript圖形渲染實戰:基于WebGL的3D架構與實現
- Microsoft Dynamics GP 2013 Reporting, Second Edition
- Java軟件開發基礎
- 前端HTML+CSS修煉之道(視頻同步+直播)
- Learning OpenStack Networking(Neutron)(Second Edition)
- Cybersecurity Attacks:Red Team Strategies
- Linux C編程:一站式學習
- R用戶Python學習指南:數據科學方法
- Beginning C++ Game Programming
- 平面設計經典案例教程:CorelDRAW X6
- 分布式數據庫HBase案例教程
- 讓Python遇上Office:從編程入門到自動化辦公實踐
- 用Go語言自制編譯器