比較

Bitwise operators

位元範圍的邏輯運算,用來在2進位 32-bit 的整數中運算。大部分程式語言都有這種設計。

這些運算元不常見。

特殊字元的==比較

和特殊值如 nullundefined 的比較:

=== 包括比對兩個不是一樣的type

console.log( null === undefined ) // false

== (a non-strict check)

這裡有特殊規則,比較元==之下,下面的比較為真:

console.log( null == undefined ) // true

💡在比較元 < > <= >= 的相關運算中, null/undefined 會被轉換:

  • null 變成0
  • undefined 變成 NaN.

null

比較 null0:

 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.