<分区>
我有时会在代码中看到符号~
。我用 ~1
试了一下,它显示 0
。
因此,我可以看到一些使用这个技巧的代码:
if ( !~text.indexOf('a') ){ }
检查真实值。是不是有点位移?
<分区>
我有时会在代码中看到符号~
。我用 ~1
试了一下,它显示 0
。
因此,我可以看到一些使用这个技巧的代码:
if ( !~text.indexOf('a') ){ }
检查真实值。是不是有点位移?
最佳答案
这是bitwise NOT operator .它将操作数转换为 32 位整数,然后产生 one's complement (反转每一位)该整数。
最后,!
将返回 true
当且仅当该操作的结果为 0
时。
一些例子可能会有所帮助:
x | x (bin) | ~x (bin) | ~x | !~x
-3 | 1111…1101 | 0000…0010 | 2 | false
-2 | 1111…1110 | 0000…0001 | 1 | false
-1 | 1111…1111 | 0000…0000 | 0 | true
0 | 0000…0000 | 1111…1111 | -1 | false
1 | 0000…0001 | 1111…1110 | -2 | false
换句话说,
if ( !~text.indexOf('a') ) { }
相当于:
if ( text.indexOf('a') == -1 ) { }
关于javascript - ~ 到底是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21798737/