《You Don't Know JS》一书提到一种简洁的判断是否找到参数字符串的方法:
var names = 'Tom Jack';
if (~names.indexOf('Jack')) {
console.log('found you!');
}
~
操作符本意是将数字的二进制表示按位取反,但是负数的二进制补码形式表示成十进制时,也要先取反加一,两次取反操作抵消了数值位的变化(符号位还是变了),结果就是:~x = -(x+1)
只是感觉写成这样明显不如names.indexOf('Jack')>-1
直观,现在有了ES6的String.includes()
,更不需要这种有点绕的方式了。