JavaScript中的后缀和前缀增量

Hei*_*del 2 javascript

我只是好奇一件事.Javascript中的一个小例子

var a = 1;
a = a++;
console.log(a); // 1

var b = 1;
b = ++b;
console.log(b); // 2

var c = 1;
c += 1;
console.log(c); //2
Run Code Online (Sandbox Code Playgroud)

我理解为什么是这样工作的情况下,bc,但怎么样a?首先代码进行赋值a = a,实际值保持不变,但它应该(如我所见)增加并增加a每单位的值.但这没有发生.为什么?

Que*_*tin 7

var a = 1;
a = a++;
Run Code Online (Sandbox Code Playgroud)
  1. 1 分配给 a
  2. a++ 被评估为 1
  3. a++递增a2
  4. a = {result of previous evaluation}分配1a所以它1再次
var b = 1;
b = ++b;
Run Code Online (Sandbox Code Playgroud)
  1. 1 分配给 b
  2. ++b递增b2
  3. ++b 被评估为 2
  4. b = {result of previous evaluation}分配2b所以它2仍然是


Sur*_*tta 5

这就是后期增量的工作原理

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

一个=一个++;

当a++执行a is 2并且表达式返回1并且a被赋值为1时。

这就是您看到增量之前的值的原因。

请注意,如果您不分配回来,您将看到 的递增值a。简而言之,您可以通过将其分配回来来覆盖此处增加的值。

var a = 1;
a++;
console.log(a); // 1
Run Code Online (Sandbox Code Playgroud)