++;someVariable vs.someVariable++;在JavaScript中
在JavaScript中,可以在变量名之前(增量前)或之后(增量后)使用++;someVariable vs.someVariable++;在JavaScript中,javascript,increment,unary-operator,Javascript,Increment,Unary Operator,在JavaScript中,可以在变量名之前(增量前)或之后(增量后)使用++运算符。如果有的话,这些递增变量的方法之间有什么区别?与其他语言相同: ++x(预增量)表示“增加变量;表达式的值为最终值” x++(增量后)表示“记住原始值,然后增加变量;表达式的值就是原始值” 现在,当用作独立语句时,它们的含义相同: x++; ++x; 当您在其他地方使用表达式的值时,就会出现差异。例如: x = 0; y = array[x++]; // This will get array[0] x
++
运算符。如果有的话,这些递增变量的方法之间有什么区别?与其他语言相同:
(预增量)表示“增加变量;表达式的值为最终值”++x
(增量后)表示“记住原始值,然后增加变量;表达式的值就是原始值”x++
x++;
++x;
当您在其他地方使用表达式的值时,就会出现差异。例如:
x = 0;
y = array[x++]; // This will get array[0]
x = 0;
y = array[++x]; // This will get array[1]
据我所知,如果你单独使用它们,它们也会做同样的事情。如果尝试将它们的结果输出为表达式,则它们可能会有所不同。尝试将alert(i++)与alert(++i)进行比较,以查看差异。i++在求值之前求值为i,++i在求值之前进行求值 请参阅以获取示例。
增加该值,然后计算并存储该值++x
计算值,然后递增并存储它x++
var n=0,m=0;
警报(n++);/*显示0,然后存储n=1*/
警报(++m);/*显示1,然后存储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
我有一个关于理解增量后和增量前的解释。所以我把它放在这里 让我们将
0
分配给x
let x = 0;
让我们从后增量开始
console.log(x++); // Outputs 0
console.log(++x); // Outputs 2
为什么?
让我们分解x++
表达式
x = x;
x = x + 1;
x = x + 1;
x = x;
第一条语句返回x
的值,即0
稍后,当您在任何位置使用x
变量时,将执行第二条语句
第二条语句返回这个x+1
表达式的值,它是(0+1)=1
请记住此状态下x
的值为1
现在让我们从预增量开始
console.log(x++); // Outputs 0
console.log(++x); // Outputs 2
为什么?
让我们将++x
表达式分解
x = x;
x = x + 1;
x = x + 1;
x = x;
第一条语句返回这个x+1
表达式的值,它是(1+1)=2
第二条语句返回x
的值,该值为2
sox=2
,因此返回2
希望这能帮助你理解什么是增量后和增量前 该死的,如果我没有停下来加载一个实用的JSFIDLE答案,我差点就给你一个答案如果使用
+1
而不是++
,这会是什么样子?在添加数字时,有没有一种方法可以在之前或之后递增?我想知道为什么要执行此操作:常量r1=(x+++(x++);根据你的例子,它不会产生预期的结果。@JeanJimenez:它产生了我预期的结果。例如,如果x
以10开头,则r1
的值为21,即10+11。第一个x++
表达式的值是10,x
增加到11。第二个x++
表达式的值是11,x
增加到12。亲爱的@JonSkeet感谢您的快速响应,我对学习JavaScript还不熟悉,我的困惑在于为什么一个增加而另一个不增加。在所有情况下,我们能保证Javascript的行为都是这样吗?或者您认为在更复杂的语句中使用increment语句是一种不好的做法吗?实际上是一个副本。我已经删除了答案,但是加了一句:“看看ECMA-262,它似乎很明确。”