Javascript - bitwise NOT
Javascript - bitwise NOT
Javascript - bitwise NOT
Javascript - bitwise NOT
...
關於那個專案中奇妙的波浪符號 ~ 是怎麼回事?
位元運算子
簡單介紹一下 二元運算子(位元運算子)在 Javascript 中的功用無非就是將 0 與 1 互相轉換,在 mozilla 文章 有詳細的說明,前端同學不一定能在職涯中常常遇見,但善用的話可能幫助提升效率。
波浪符號
維護公司專案時看到一段新穎的代碼所以來了興致,決定記錄下來這個冷門但奇淫的技巧以利自己往後看到能快速反應 XD。
1 | if (!eligible) { |
邏輯分析
程式碼中的波浪符號 ~ 成功地吸引了我的注意,專案眾多但第一次見到二元運算符在應用上的實際好處。
- 從代碼結論判斷應是
index !== -1時執行後方的運算 if判斷顯示括弧內是布林值(Boolean)- 波浪符號
~為位元運算符中的 NOT,Mozilla 解釋 **將運算元中的每個 bit 反轉(1->0,0->1)**。 -1經過 NOT 轉換結果為0,透過布林值轉換為負值,不執行後方運算。
使用情境
~(-1) = 0 & ~(0) = -1 尋找索引值的運算非常適合此快速作法轉換。
雙波浪符號
在別人文章看到使用雙波浪號 ~~ 來轉型字串(String)為整數(Number)的作法,與 Math.floor(123.45) 大同小異,不過必須確保數值在安全範圍內,也就是 -2147483648 ~ +2147483648。