++ 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)相比,以查看差异。 我加入之前我评估我和++我做了额外的评估之前。
我昨天正在考虑这个问题,阅读这个关于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