Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript函数中~的含义_Javascript_Node.js - Fatal编程技术网

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

我正在阅读以下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(~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) {