先看個栗子:
~~false === 0 ~~true === 1 ~~undefined === 0 ~~!undefined === 1 ~~null === 0 ~~!null === 1
~~"" === 0
~~!"" === 1
~是按位取反的意思,計算機里面處理二進制數據時候的非,~~就是再轉回來,利用兩個按位取反的符號,進行類型的轉換,轉換成數字符號。
而在計算機里面的^=是異或運算,相同取0,不同取1.
兩個整數交換可以醬紫表示:
var a = 10,b=20; a ^= b; b^=a;a^=b;
將a = a ^= b; b = b^=a; a = a^=b;在js中類似於:
var a = 1,b = 2; a = a + b; b = a - b; a = a - b; a // 2 b //1
不過這種方法適用於任意兩個數字類型的交換,無論是整數類型還是小數。
其次,交換兩個變量,最簡單的方式是:
var a = 2,b = 'Miya'; [a,b,] = [b,a,] a // Miya b //2
這個是ES6中的數組的解構賦值,很方便的進行兩個變量的交換。