~~在JavaScript / node.js中做了些什么?

可能重复:
什么是JavaScript中的“double tilde”(~~)运算符?

我在node.js库的源代码中find了这段代码。 ~~inputvariables有什么影响?

 inArray[3] = ~~input; 

它也用于其他方面:

 return ~~ ((a - b) / 864e5 / 7 + 1.5); 

~运算符翻转其操作数的位。 使用它两次翻转位,然后再次翻转它们,返回一个标准的JavaScript值等价于操作数,但以整数forms。 这是parseInt(myInt)的简写。

截断一个值是一种骇人的方式,有点像Math.floor做法,除了负数的行为不同。 例如,截断-15.9( ~~-15.9 )给出了-15 ,但是它总是朝向最低的数字,所以Math.floor(-15.9)将会给出16

另一种做法是将OR与零 。

 var a = 15.9 | 0; //a = 15 

它将该值转换为整数。