关于~
运算的使用
- “~”即“非”运算,在二进制里对数字的每一位进行取反
- 在实际表现上则是
-num-1
即~1=>-2 ~-1=>0
- 在运算时
NaN
被当作0来运算 - 根据这个特性可以在String.indexOf()的结果中直接判断有没有查找的字符
- 在实际表现上则是
所以
!!~string.indexOf("something")
等价于string.includes("something")
- 实际中
~~
更加容易被用到- 经过两次
~~
运算会得到运算数的整数部分 -
~~3.14 => 3
~~-3.14 => -3
~~NaN => 0
~~-0 => 0
- 该方法与
Math.trunc()
的唯一不同点是Math.trunc(NaN) => NaN
Math.trunc(-0) => -0
- 经过两次