【问题标题】:Javascript: Changing a positive number to a negative?Javascript:将正数更改为负数?
【发布时间】:2016-10-04 22:59:23
【问题描述】:

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

看来有很多方法可以做到这一点。有标准

x *= -1

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

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

我认为还有其他方法。

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

有什么想法吗?

【问题讨论】:

  • “速记”unary - operator 必须工作,否则您将如何将1 更改为-1 以使用*= -1 选项? (顺便说一句,请注意-* 都尝试将它们的操作数转换为数字,所以x *= "-1"x = "12"; x = -x; 一样有效。)
  • 在@martin 下方添加了更多详细信息

标签: javascript


【解决方案1】:

Javascript 中的一元运算符基本上是速记函数。你可以找到Unary (-)here的文档

- 接受一个参数。您传递给它的号码。在引擎盖下,我猜它乘以-1 并返回产品。函数可以这样写:

function -(arg) {
  return arg * -1;
}

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

更新:

因此,通过进一步的研究,我认为它不是乘以 -1,而是一个简单的符号更改。我提到了 V8 的实现,但这被证明是一个死胡同,因为我对 C++ 很烂,但是在检查了 ECMA's specs 和 Steve Hollasch 精彩博客中定义的 IEEE 754 specs 之后,我倾向于反转符号位。所有 Javascript 数字都是 64 位 IEEE 754 浮点数,它们可以这样表示:

SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM

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

【讨论】:

    猜你喜欢
    • 2021-08-20
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    相关资源
    最近更新 更多