关于位运算符~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是不能用于对象的!类型转换