文章目錄
  1. 1. Not
  2. 2. Xor
  3. 3. 比較
  4. 4. 結論

程式的重要組成之一,一定會提到判斷的對吧!在判斷的時候,常常會用到的就是 boolean 對吧!boolean 有 truefalse。在我們需要判斷的時候,常常會有 假如他沒有...假如他不是... 那種否定的判斷對吧! 沒錯、這次說的就是那個 not 歐~

Not

在 js 裡、 not 隨便用好像都可以…。從 !0!null!undefined … 簡單的說,就是直得相反,完全沒有問題。如果真的要取得 bool ,其實就會比較建議使用 !!value 了,畢竟、 value 就是個值。

所以、 not 沒有什摸好說的啦~ 就是個很常用的東西。

Xor

比較有趣的其實是這個, ^ 他其實是位元計算,大部份的人應該對他們都比較陌生。但有一陣子、我實在是蠻著迷的,因為數位邏輯真的很有趣(但那好久以前了)。最近突然回憶起來,所以、覺得應該很適合當一篇小品。

xor 的定義…. 大家應該都蠻熟悉的(?) 就不多談了。

比較

他要拿來跟 not 比較的前提,當然就是只有一個位元的情況啦~ value ^= 1 這是我最常用的情形,因為這樣的寫法跟 not 有異曲同工之妙啦~ 但是他們的差異在…. xor 的結果是 number , not 是 boolean ,但是在 js 的判斷上,其實不會有問題。

1
2
3
4
5
6
7
8
9
console.log(!0); // true
console.log(!1); // false
console.log(0^1); // 1
console.log(1^1); // 0
console.log(!true); // false
console.log(!false); // true
console.log(true^1); // 0
console.log(false^1); // 1

基本上、 xor 我大概就是用在這幾種情況,但、不太建議用在 非數字 的情境啦~!也許會有人想說、 not 用得好好的幹嘛用 xor ,這也太冷門的用法了吧?

是的、位元運算是比較少用沒錯,而我會用的情況通常是把它當作種類情形這樣的前提下使用的。不過、用 boolean 也沒什摸不好啦~ 就是一種習慣,有時候、拿來操作也很方便。

1
2
3
4
let count = 99;
let toggle = 0;
count += ((toggle ^= 1) || -1);

用這種方法、在計算正反次數實在很方便啊啊啊啊!當然、其他有需要運算的情況有時候也是比if-else 要來得方便啦!所以、有時候我蠻喜歡用的。很久以前也試過用 bitwise 的方式導入流程,誒、還蠻有趣的,但是… 實在有點難懂~ XDDD 但蠻有趣的啦~ 然後、一個位元的這個方式,大概是我從當時玩到現在,覺得還是很好用的方式。也不會一堆 ! ,看了也不舒服。

結論

雖然、位元操作可能是比較不直覺的方式,但、有時候真的很好用。沒有過的人可以試試看、真的還蠻不錯的,有時候真的很省事。不過、如果有閱讀上的困難,那…也不建議用啦~

文章目錄
  1. 1. Not
  2. 2. Xor
  3. 3. 比較
  4. 4. 結論