~ 返回 2 的补码,~x 大致等同于 -(x+1)我们知道在 JavaScript 中假值有:undefined、null、false、+0、-0、NaN、'',其他都为真值,所以负数也是真值,那么我们就可以拿着 ~ 和 indexOf 一起检结果强制类型转换为 真/假 值const str = 'hello world';~str.indexOf('lo'); // -4,真值if (~str.indexOf('lo')) { // true // 找到匹配}~str.indexOf('ol'); // 0,假值!~str.indexOf('ol'); // trueif (!~str.indexOf('ol')) { // true // 没有找到匹配}~ 要比 >=0 和 == -1 更简洁