javascript函数中~的含义
我正在阅读以下javascript函数:javascript函数中~的含义,javascript,node.js,Javascript,Node.js,我正在阅读以下javascript函数: if (~['bacon', 'burger'].indexOf(type)) { this.res.writeHead(200, { 'Content-Type': 'text/plain' }); this.res.end('Serving ' + type + ' sandwich!\n'); } 但是我不知道什么是~有人知道我什么时候用它或者什么意思 ~ is a Bitwise NOT operator... 按位NOT
if (~['bacon', 'burger'].indexOf(type)) {
this.res.writeHead(200, { 'Content-Type': 'text/plain' });
this.res.end('Serving ' + type + ' sandwich!\n');
}
但是我不知道什么是~
有人知道我什么时候用它或者什么意思
~ is a Bitwise NOT operator...
按位NOT(~a)将其操作数的位反转
范例
- 9(基数10)=0000000000000000000000000000001001(基数2)
- ~9(基数10)=11111111111110110(基数2)=-10(基数 (十)
~
是按位NOT运算符。它切换数字的每一位
变为0
-1
变为-1
0
- 没有其他数字变为零
if (~['bacon', 'burger'].indexOf(type)) {
这是一种令人困惑的写作方式
if (['bacon', 'burger'].indexOf(type) == -1) {
indexOf
在找不到字符串时返回-1
。在本例中,~
允许该代码将.indexOf()
的返回值转换为布尔值,该值指示数组中搜索值的位置。换句话说,它接受“where is value”结果并将其转换为“is the value In the list”结果
怎么做?当找不到值时,
.indexOf()
返回-1
,如果找到,则返回大于或等于零的数字。~
运算符将其数值参数转换为32位整数,然后反转每一位。该过程恰好将-1
转换为0
,将任何正整数转换为某个负非零值,0
转换为-1
。当随后将这些结果作为布尔值进行检查时,原始的-1
将为false
(因为0
为“falsy”),而大于或等于零的整数将为true
(因为它们都转换为一些非零值).按位NOT~a反转其操作数的位。按位NOT运算符->的可能重复项不要使用某人对该问题的评论作为答案。在我发表评论/投票时,你的答案中只有从dev.mozilla网站复制的一些示例代码。即使现在,你所拥有的只是一个例子和一个链接,没有任何解释。“当你遇到一篇极其草率、不费力气的帖子,或者一个答案显然是错误的,甚至可能是危险的错误时,请投反对票。”
if (['bacon', 'burger'].indexOf(type) == -1) {