++ someVariable与JavaScript中的someVariable ++

时间:2010-08-12 16:30:19

标签: javascript increment unary-operator

在JavaScript中,您可以在{预增量之前)或变量名称之后使用++运算符( post-increment )。这些增量变量的方法之间的区别是什么?

7 个答案:

答案 0 :(得分:190)

与其他语言相同:

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

现在,当用作独立声明时,它们的含义相同:

x++;
++x;

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

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

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

答案 1 :(得分:33)

  • ++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++运算符相比,您可以在其中读取值,对其进行评估,修改,然后存储它。

答案 2 :(得分:6)

据我所知,如果你单独使用它们,它们会做同样的事情。如果您尝试将它们的结果作为表达式输出,那么它们可能会有所不同。与alert(++ i)相比,尝试提醒(i ++)以查看差异。 i ++在添加之前评估为i,++ i在评估之前进行添加。

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

答案 3 :(得分:3)

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

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

希望这可以帮助您了解什么是后增量和前增量!

答案 4 :(得分:1)

昨天我在考虑this response关于bad assumptions in C/C++的问题。在所有情况下,我们可以保证Javascript的行为方式吗?或者你认为在一个更复杂的语句中使用递增语句是不好的做法吗?

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

jsfiddle