日期:2014-05-16  浏览次数:20360 次

关于js符号的问题
~'string|number'.indexOf(type)中开头的~是什么意思啊
------解决方案--------------------
按位取反啊,位运算呢自己去百度一下吧
------解决方案--------------------
按位非操作符
------解决方案--------------------
按位非操作符
3的2进制数为
0000 0000 0000 0000 0000 0000 0000 0011
~3就是将3转换为2进制后对它进行取反操作,再将取反得到的二进制转换为十进制
3取反的结果为
1111 1111 1111 1111 1111 1111 1111 1100
它的最高位为1,即为负数,负数二进制转换为十进制的操作是减一取反加负号;即:
1111 1111 1111 1111 1111 1111 1111 1100 - 1
得到结果
1111 1111 1111 1111 1111 1111 1111 1011
再取反得到
0000 0000 0000 0000 0000 0000 0000 0100 
转换为十进制整型就为4了,加上负号即为:-4 
所以最后结果:~3的结果是-4。
------解决方案--------------------
#3说的对。

这里的用法~'string
------解决方案--------------------
number'.indexOf(type)和'string
------解决方案--------------------
number'.indexOf(type) != -1是等价的。

-1按位取反刚好是0,所以,按位取反符号在取逻辑值的语境下其实就是不等于-1的意思。