Javascript:将正数更改为负数?

Mar*_*tin 0 javascript

我一直在尝试执行以下操作 - 将正数更改为负数。

似乎有很多方法可以做到这一点。有标准

x *= -1
Run Code Online (Sandbox Code Playgroud)

或者只是在变量前面放置一个负号,即如果 x = 5,则 -x 等于 -5。

这似乎是一个很好的速记,但想知道有什么区别,我在 MDN 上找不到关于这个速记的任何文档。

我认为还有其他方法。

可能是一个基本问题,但不理解这个明显的速记很烦人。

有任何想法吗 ?

nik*_*ohn 5

Javascript 中的一元运算符基本上是速记函数。您可以在此处找到有关文档Unary (-)

-一个参数采用。你传递给它的号码。在幕后,我猜它乘以它-1并返回产品。该函数可以写成:

function -(arg) {
  return arg * -1;
}
Run Code Online (Sandbox Code Playgroud)

不过这是猜想。需要通过 V8 的代码库才能确定。

更新:

所以从进一步的研究中我认为它不是乘以-1,它可能是一个简单的符号变化。我提到了 V8 的实现,但事实证明这是一个死胡同,因为我不擅长C++,但是在检查ECMA 的规范和Steve Hollasch 精彩博客中定义的IEEE 754 规范后,我倾向于反转符号位。所有 Javascript 数字都是 64 位 IEEE 754 浮点数,它们可以这样表示:

SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
Run Code Online (Sandbox Code Playgroud)

S符号位在哪里。所以看起来一元-只是翻转符号位。