本文不是讨论这个字符是什么意思,如果想了解关于按位非运算符请戳这里
首先让我们来看看这一段代码
if (~selector.indexOf('#')) {
// 如果字符串中包含‘#’
} else {
// 否则
}
不了解~符合的小伙伴可能到这里就懵了,这是什么操作?
我们都知道,在js中,str.indexOf()会返回某个指定的字符串值在字符串中首次出现的位置,如果没有找到,会返回-1
0在内存中的存储方式是所有位为0
0000000000000000
那么按位取反后位16个1(如果整形在你的机器上站16位),那么表示的数为-1.
~0 === -1 并且 ~-1 === 0
重点就在这里,-1的取反操作等于0,而其他数的取反操作不等于0。所以用indexOf操作符可以用~操作来判断某个字符串里是否有某个字符。