在 JavaScript 中,有些变量与有些变量相比

在 JavaScript 中,可以在变量名(增量后)之前或之后使用 ++运算符。如果有的话,这些递增变量的方法有什么不同?

91073 次浏览

和其他语言一样:

  • ++x(前增量)表示“增加变量; 表达式的值是最终值”
  • x++(后递增)意思是“记住原始值,然后递增变量; 表达式的值就是原始值”

现在,当用作一个独立的声明时,它们的意思是一样的:

x++;
++x;

当您在其他地方使用表达式的值时,就会出现差异。例如:

x = 0;
y = array[x++]; // This will get array[0]


x = 0;
y = array[++x]; // This will get array[1]

据我所知,如果你单独使用它们,它们也会做同样的事情。如果您尝试将它们的结果作为表达式输出,那么它们可能会有所不同。请尝试与踪(i + +)相比,发现其中的差异。I + + 在加法之前计算为 i,+ + i 在计算之前进行加法。

有关示例,请参见 http://jsfiddle.net/xaDC4/

  • ++x递增该值,然后计算并存储它。
  • x++计算值,然后递增并存储它。
var n = 0, m = 0;


alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */

请注意,在可能的情况下使用 ++x对性能有轻微的好处,因为您读取变量,修改它,然后计算和存储它。与读取值、计算值、修改值、然后存储值的 x++操作符相比较。

var x = 0, y = 0;


//post-increment: i++ returns value then adds one to it
console.log('x++ will log: ', x++); //0
console.log('x after x++ : ', x);    //1


//pre-increment: adds one to the value, then returns it
console.log('++y will log: ', ++y); //1
console.log('y after ++y : ', y);   //1
var a = 1;
var b = ++a;
alert('a:' + a + ';b:' + b); //a:2;b:2


var c = 1;
var d = c++;
alert('c:' + c + ';d:' + d); //c:2;d:1

翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳

我有一个关于理解后增量和前增量的解释,所以我把它放在这里。

让我们把 0分配给 x

let x = 0;

让我们从后增量开始

console.log(x++); // Outputs 0

为什么?

让我们分解 x++表达式

x = x;
x = x + 1;

第一个语句返回 x的值,即 0

稍后,当您在任何地方使用 x变量时,将执行第二个语句

第二个语句返回这个 x + 1表达式的值,即 (0 + 1) = 1

请记住 x在这个状态下的值是 1

现在让我们从预增量开始

console.log(++x); // Outputs 2

为什么?

让我们分解 ++x表达式

x = x + 1;
x = x;

第一个语句返回此 x + 1表达式的值,即 (1 + 1) = 2

第二个语句返回 x的值,即 2,因此 x = 2返回 2

希望这能帮助您理解什么是后增量和前增量!

如果可能的话,使用 ++i更清晰、更快捷:

  • ++i保证您使用的值 i将保持不变,除非您更改 i
  • i++允许使用 i的值,这将在“不久的将来”改变,这是不可取的,如果可能的话

当然,它并不是真的快多少,只是一点点。