關於位運算符~spa
~a 大體等同於 -(a+1),code
它首先將值強制類型轉換爲 32 位數字,而後執行字位操做「非」(對每個字 位進行反轉)。 對象
在 -(a+1) 中惟一可以獲得 0(或者嚴格說是 -0)的 a 值是 -1。也就是說若是 a 爲 -1 時,~blog
和一些數字值在一塊兒會返回假值 0,其餘狀況則返回真值。it
so,就有了下面的應用class
let a = "asdfasf"; if (a.indexOf('a') != -1) { //.... }
等同於layout
let a = "asdfasf"; if (~a.indexOf('a')) { //.... }
注:indexOf是不能用於對象的!類型轉換