Simple Note

~(-1) = 0 ?

2016.02.22

《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(),更不需要这种有点绕的方式了。

Comments
Write a Comment