在Javascript中,如何在递增(i++*2)之后进行乘法运算

How works multiplication just after incrementation (i++ * 2) in Javascript?

本文关键字:之后 运算 i++ Javascript      更新时间:2023-10-01

在发布答案之前,请阅读整个主题。在帖子中找不到这个问题的答案:++someVariable Vs Javascript 中的someVariable++

var i = 1;
i = i++ * 2; // i = 2, .. why not 4 ?

解释器执行乘法(1*2),但增量(i++)在哪里?

var i = 1;
i = ++1 * 2; // i = 4 

据我所知,I++在语句之后进行增量,++I在语句之前进行增量,但在本例中:I=I++*2//(1*2),解释器是如何工作的?,在这种情况下,i的增量在哪里?也许i=(1*2)+1),或者i=(2*2),我不存在了,没有什么可增加的??

如何

附言:我认为,这是一个错误的问题,但正如Brooks Hanes(在评论中)所说,这是个学习的例子。

i++表示:读取变量i的值,然后增加变量i的

++i的意思是:增加变量i,然后读取变量i的值

这是一个有趣的小问题,一个简单的实验显示了正在发生的事情。jsFiddle

var i = 3; p = i++ *2; console.log(i, p);

2乘以i(3),结果(6)放在p中。然后i(3的原始值的副本增加并放回i中。这种行为在逻辑上与以下一致:

var i = 3; var p = 0; function adder(x) { p = x + 2; }; adder(i++); console.log(i, p);

这有点奇怪,因为后增量应该发生在语句之后。