++ someVariable VS. JavaScript中的一些可变的++

在Javascript中,您可以在变量名称之前或之后使用++运算符。 这些增加变量的方法之间有什么区别?

与其他语言相同:

  • ++x (预增)意味着“递增变量;表达式的值是最终值”
  • x++ (post-increment)意思是“记住原始值,然后递增变量;表达式的值是原始值”

现在,当作为独立语句使用时,它们意味着同样的事情:

 x++; ++x; 

当你在其他地方使用表达式的值时,会产生差异。 例如:

 x = 0; y = array[x++]; // This will get array[0] x = 0; y = array[++x]; // This will get array[1] 
  • ++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++操作符相比,评估它,修改它,然后存储它。

据我了解他们,如果你单独使用他们做同样的事情。 如果你尝试输出他们的结果作为一个表达式,那么他们可能会有所不同。 尝试警报(i ++)与警报(++ i)相比,以查看差异。 我加入之前我评估我和++我做了额外的评估之前。

请参阅http://jsfiddle.net/xaDC4/

我昨天正在考虑这个问题,阅读这个关于C / C ++糟糕的假设的问题。 在所有情况下,我们可以保证JavaScript的行为是这样吗? 或者你认为在更复杂的语句中使用增量语句是不好的做法?

 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