本文章内容主要来源于《你不知道的JavaScript(中卷)》
1、~是什么
非,强制类型转换,它首先将值强制类型转换为32位数字,然后执行字位操作“非”。
2、有一种用法
indexOf的用处是可以查找元素的位置,也可以检测是否含有子字符串,如果找到就返回他对应的索引位置,反之,返回-1。但是我们不应该拿结果与-1直接进行比较,这在代码中暴露了底层的实现细节。我们可以利用~和indexOf()将结果强制类型转换为真/假值:
如果indexOf()返回-1,~将其转换成假值0,其他情况一律转换为真值。
3、另一种用法
~~的用法和Math.floor()的效果并不一样,它第一个波浪线是执行ToInt32并反转字位,然后第二个是再进行一次字位反转,最后得到的仍然是ToInt32的结果。特别注意一点,它只适用于32位数字,对负数的处理与Math.floor()也不同。