【问题标题】:What Is '~ ~' in Javascript? [duplicate]Javascript 中的“~~”是什么? [复制]
【发布时间】:2014-02-06 00:33:09
【问题描述】:

看过'~ ~' 谁能解释一下它是干什么用的?

已完成谷歌搜索,但没有返回任何内容。

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

【问题讨论】:

标签: javascript


【解决方案1】:

~ 是位运算符。通过使用它两次,有人说它是一种优化,而不是使用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)

但是 ++)
也检查一下 cmets,我相信会有一些更有趣的方面。

我个人更喜欢在性能甚至不确定的情况下的可读性。加上其他效果...只需使用Math.floor 这是最好的!

查看更多按位运算符:mozzila ref,以及w3schools 上 JavaScript 中数字的表示方式。

【讨论】:

  • Math.floor() 不太一样,因为 JavaScript 位运算符都适用于 32 位值。 Math.floor 可以处理 64 位浮点值。
  • 另外,~~"a" 返回 0,而 Math.floor("a") 是 NaN。
【解决方案2】:

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

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

var anInteger = ~ ~ aValue;

【讨论】:

    猜你喜欢
    • 2016-01-02
    • 2013-04-06
    • 2011-04-02
    • 2015-12-13
    • 1970-01-01
    • 2011-04-29
    • 2014-01-23
    • 1970-01-01
    • 2016-11-19
    相关资源
    最近更新 更多