什么是Javascript中的'~~'?

时间:2014-01-16 21:14:54

标签: javascript

看过'~~'有人可以解释它的用途吗?

已完成谷歌搜索,没有任何回报。

这是一些数学运算符,但不知道它对数值的实际作用是什么?

2 个答案:

答案 0 :(得分:7)

〜是一个按位运算符。通过使用它两次,有些人说它是优化而不是使用Math.floor,如:

var a = 1.9;
Math.floor(a) === ~~a // true (1 === 1)

然而1)阅读this answer以了解其实现方式,并this performance test了解在某些情况下Math.floor()更快。 Math.floor()稍后会表现得更好,因为这是它的目的!

然而2)阅读this answer以查看对负数和某些边缘情况的不同影响。

var a = -1.5;
Math.floor(a) !== ~~a // true (-2 !== -1)

但是+)
Math.floor(Infinity) !== ~~Infinity // true (Infinity !== 0)

然而++)
检查评论,我相信会有更多有趣的方面。

就个人表现甚至不确定的情况而言,我个人更喜欢可读性。加上其他效果......只需使用Math.floor即可!

请参阅更多按位运算符:mozzila ref,以及如何在w3schools上的JavaScript中表示数字。

答案 1 :(得分:3)

这是一对按位补码运算符。它不是一个单一的运营商。

它有时用于将数值强制为32位整数:

var anInteger = ~ ~ aValue;