Javascript 什么事~我该怎么办?
我正在尝试阅读以下代码:Javascript 什么事~我该怎么办?,javascript,operators,Javascript,Operators,我正在尝试阅读以下代码: var cloneKeys = Object.keys(base).filter(function ( k ) { return !~noCloneKeys.indexOf(k); }); 什么是~你在这里做什么?我以前从未见过它,而且很难找到它。从表面上看,它看起来像是一个逻辑运算符和一个位运算符的组合,但这对我来说没有任何意义。它是一个(非常不可读的)noCloneKeys的缩写形式。indexOf(k)=-1 ~value = binary in
var cloneKeys = Object.keys(base).filter(function ( k ) {
return !~noCloneKeys.indexOf(k);
});
什么是~代码>你在这里做什么?我以前从未见过它,而且很难找到它。从表面上看,它看起来像是一个逻辑运算符和一个位运算符的组合,但这对我来说没有任何意义。它是一个(非常不可读的)noCloneKeys的缩写形式。indexOf(k)=-1
~value = binary inverse, ~(-1) => 0
!value = boolean inverse, !(0) => true
为了让您的开发伙伴保持头脑清醒,请编写=-1
或<0
详细说明:
-1 == binary 11111111111111111111111111111111 (assuming 32 bit integer)
~(-1) == 00000000000000000000000000000000
!(~(-1)) == !(0) == true
它是noCloneKeys.indexOf(k)=-1的(非常不可读)缩写形式
~value = binary inverse, ~(-1) => 0
!value = boolean inverse, !(0) => true
为了让您的开发伙伴保持头脑清醒,请编写=-1
或<0
详细说明:
-1 == binary 11111111111111111111111111111111 (assuming 32 bit integer)
~(-1) == 00000000000000000000000000000000
!(~(-1)) == !(0) == true
这是两个运算符的组合,而不是
代码>和波浪线~
波浪号(按位非)-~
:
这个操作符执行-(输入+1)
(它实际上是在翻转位,但我认为这是一个很好的初学者思考方法)。因此,在indexOf()
的情况下,如果没有找到输入,则返回-1
,tilde将-1
转换为0
。对于找到输入的所有情况,tilde将把0
或更大的值转换为-1
,-2
,-3
,-4
,等等
不是——代码>:
这是一个布尔运算符,用于反转输入。或者在您的情况下,将任何0
转换为true,将任何非零转换为false
因此,如果我们将它们结合起来,我们会说,对于indexOf
找不到输入的任何实例,给我0
,并将其反转为true
。对于所有其他有效输入,返回false
这是两个运算符的组合,而不是代码>和波浪线~
波浪号(按位非)-~
:
这个操作符执行-(输入+1)
(它实际上是在翻转位,但我认为这是一个很好的初学者思考方法)。因此,在indexOf()
的情况下,如果没有找到输入,则返回-1
,tilde将-1
转换为0
。对于找到输入的所有情况,tilde将把0
或更大的值转换为-1
,-2
,-3
,-4
,等等
不是——代码>:
这是一个布尔运算符,用于反转输入。或者在您的情况下,将任何0
转换为true,将任何非零转换为false
因此,如果我们将它们结合起来,我们会说,对于indexOf
找不到输入的任何实例,给我0
,并将其反转为true
。对于所有其他有效输入,返回false
我认为它实际上是在检查k
是否不在noCloneKeys
集中。~foo.indexOf(bar)
技巧允许使用.indexOf()
,就像它返回一个布尔结果一样,所以在它前面加上代码>使其表示“不在列表中”(或字符串,无论是什么)。是的,谢谢,编辑了我的答案。看到了吗,孩子们?如果您让开发人员阅读,他们就会发生这种情况~(-1)
太频繁了-他们会精神失常!我认为它实际上是在检查k
是否不在noCloneKeys
集合中。~foo.indexOf(bar)
技巧允许使用.indexOf()
,就像它返回一个布尔结果一样,所以在它前面加上代码>使其表示“不在列表中”(或字符串,无论是什么)。是的,谢谢,编辑了我的答案。看到了吗,孩子们?如果您让开发人员阅读,他们就会发生这种情况~(-1)
太频繁了-他们会精神失常!