~ 在JS中作爲位運算符表示取反,即把執行該操作的數值的二進制碼的每一位(共8位)中0和1互換。
類似的還有:
<<左移,<<a 將a第一位丟棄,後七位尾部加0
>>右移,>>a 將a末位丟棄,前七位開頭加0
& 或,a & b 將a和b中所有爲1的位組成新值
| 與 ,a | b 將a和b中ab同時爲1的位組成新值
^ 異,a ^ b 將a和b中ab不同的位組(即其中一個爲0且另一個爲1,則爲1,兩個都爲0或都爲1,則爲0)成新值
上面請忽略,直接看結果吧
-
console.log(~-2);//1
-
console.log(~-1);//0
-
console.log(~0);//-1
-
console.log(~1);//-2
-
console.log(~2);//-3
所以 ~a = -(a + 1)
所以可以這麼用
-
var arr = ['a', 'b']
-
if(~arr.indexOf('a')){
-
console.log(true);
-
}else{
-
console.log(false);
-
}
-
//true
由於indexOf方法返回-1表示不包含指定元素,否則爲包含,所以可以利用~可以把-1轉換爲0,否則爲非0整數