比較

Bitwise operators
位元範圍的邏輯運算,用來在2進位 32-bit 的整數中運算。大部分程式語言都有這種設計。
- AND (
&
) - OR (
|
) - XOR (
^
) - NOT (
~
) - LEFT SHIFT (
<<
) - RIGHT SHIFT (
>>
) - ZERO-FILL RIGHT SHIFT (
>>>
)
這些運算元不常見。
特殊字元的==
比較
和特殊值如 null
或 undefined
的比較:
===
包括比對兩個不是一樣的type
console.log( null === undefined ) // false
而 ==
(a non-strict check)
這裡有特殊規則,比較元==
之下,下面的比較為真:
console.log( null == undefined ) // true
💡在比較元 < > <= >=
的相關運算中, null/undefined
會被轉換:
null
變成0
,undefined
變成NaN
.
null
比較 null
和 0
:
console.log(null > 0) // (1) false
console.log(null == 0) // (2) false
console.log(null >= 0) // (3) true
上面看起來好像有矛盾。
原因是== 和其他的 比較元 >= <= 的解譯方式不一樣. 前者將
null` 轉成0。
undefined
這個值再怎樣比較都是 false
console.log( undefined > 0 ) // false (1)
console.log( undefined < 0 ) // false (2)
console.log( undefined == 0 ) // false (3)
為甚麼?因為在比較的時候, undefined
被轉成NaN
. 在程式設計觀念中,和 NaN
都是false.