看过'~~'有人可以解释它的用途吗?
已完成谷歌搜索,没有任何回报。
这是一些数学运算符,但不知道它对数值的实际作用是什么?
答案 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;