Javascript:数学运算方法

Javascript: Mathematical operation methods

本文关键字:运算 方法 Javascript      更新时间:2023-09-26

在此代码上,第一个警报框显示-3,我只是想到这一点。这怎么可能?至于我对此的了解,是应该警觉-2,我缺乏了解的地方?请

var x = 6; var y=8;
alert(x++-++y);
alert(x);alert(y);

++一元运算符 - 来自C,也许是B,也许是PL/I的遗留 - 可以用作增量或后增量运算符。如果将其放在 l 值(变量引用(之后,则表达式的值是变量递增的值。该表达式具有递增变量值并将其存储回去的副作用。

因此:

  • x++的值是6,因为这是x在递增之前的值。
  • ++y的值是9的,因为++运算符被用来预递增变量y
  • 6 - 9 -3

许多计算机指令集架构都包括用于机器寄存器和/或存储器位置的递增前和后递增寻址模式,以方便各种任务,特别是从内存区域加载值并递增地址寄存器以准备获取下一个值的过程。我一直强烈怀疑这些概念向上渗透到高级语言中,以提供类似的便利。

语句

x++和语句++x之间存在差异。前者将返回 x 的原始值,而后者将返回 x 的new值。

结果,计算结果为 6(x 的起始值(减去 9(y 的新值(。

前导++将在操作后将值加 1,而尾随++将在操作前应用该值。因此6-9=-3

x++ 返回递增 6 之前的值。

++y 返回递增的值 9。

6 - 9 = -3

x++ => 6 // postfix
++y => 9 // prefix 

所以6 - 9 = -3

根据 MDN 上的后缀/增量 (++( 文档:

    如果使用后缀,运算符在
  • 操作数后(例如,x++(,则在递增之前返回值。
  • 如果在操作数之前使用带有运算符的前缀(例如,++x(,则它在递增后返回值。

x++ 直到操作后才会更改 x 值,因此它是 6。

++y 在操作之前更改值,因此该值变为 9。

因此,第一个警报显示 -3。

第二个警报没有帮助,因为您看到的值现在已更改为 x (7( 而不是 6。