Try   HackMD

邏輯運算子與位元運算子

本篇會談到

  • 邏輯運算子 (Logical Operators)
  • 位元運算子(bitwise operators)

✐ 邏輯運算子 (Logical Operators)

用來做布林值 (boolean) 的運算,運算結果傳回 truefalse

在真假判斷式中,所有東西都可以轉換為布林值,而除了 null, false, 0,-0, NaN, '空字串' 和 undefined 是 false,其他的值都是 true。



&& and

  • 若有 任何一個條件為 false,即會回傳 false

    ​​​​978 && 0 ​​​​// 回傳0 ​​​​//&&要兩個都是 true,才會是 true ,但 0 是 false,所以就回傳了 0 。
    ​​​​false && 521 ​​​​// 回傳false ​​​​//第一個就是false,就回傳第一個 false
  • 需要所有的條件為 true,才會回傳 true

    ​​​​543 && 666 ​​​​// 666 ​​​​//第一個是 true ,第二個也是 true,回傳第二個

|| or

  • 任何一個條件為 true,即會回傳 true ,反之,所有的條件都為 false,即會回傳 false

&& 和 || 特別的地方: 如果運算元的值不是布林值,實際上會傳回其中一個運算元的值

  • 只要有個 true ,整個就會是 true,所以回傳第一個東西
    ​​​​3 || 10 ​​​​// 回傳 3
  • flase 回傳後面的值
    ​​​​0 || false ​​​​// 回傳false ​​​​// //兩個都是 false,他傳了後面的 false。
  • 兩個都是 false,回傳後面的 false
    ​​​​0 || false ​​​​>false ​​​​//兩個都是 false,他傳了後面的 false。

! not

  • 不是的意思,不是對就是錯,不是錯就是對
    ​​​​!true ​​​​// false
    ​​​​!false ​​​​// true

✐ 位元運算子(bitwise operators)

位移運算 << 左移 與 >> 右移

位元就是針對每一個 bit 做操作,而不是對整體去做運算

使用 <<>> 會比 乘以2除以2,效能上來的更好

回顧二進位的算法

0010 = 2^1 = 2 // 1 在第二個,2 的一次方 0101 = 2^2 + 2^0 = 5 // 1 在第三個和第一個 // 2 的二次方+ 2 的 0次方

位元左移 <<

  • 範例:左移一位(可看成 2的幾次方)
10 << 1 // 10 *2 // 位元左移一位 10 << 3 // 80 // 10 x 2^3

位元右移 >>

  • 同理,右移一位(可看成 除 2 的幾次方)
80 >> 3 // 10 1024 >> 10 // 1
  • 多餘的值不會出現
9 >> 2 // 2 // 9/2^2 = 9除以4 = 2餘1
tags: JS

最後,親愛的大家!我需要你的大聲鼓勵 ٩(⚙ᴗ⚙)۶

如果覺得這篇文章對你有幫助,請給我個一個小小的鼓勵 ❤ 讓我知道,這會成為我寫下去很大的動力。
對了,我還有其他文章,如果有興趣也來逛逛吧!
(文章中如有覺得不妥之處、錯誤內容,也可以透過聯絡我,我會儘速改善,感謝!)

☞ YoJanni 珍妮 2021 正在設計轉職前端的路上,希望大家在學習的路上能夠一起成長
☞ 聯絡我