++ someVariable Vs. Javascript中的someVariable ++

Der*_*air 122 javascript increment unary-operator

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

Jon*_*eet 214

与其他语言相同:

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

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

x++;
++x;
Run Code Online (Sandbox Code Playgroud)

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

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

x = 0;
y = array[++x]; // This will get array[1]
Run Code Online (Sandbox Code Playgroud)

  • 诅咒,我几乎打败了你的答案我没有停下来加载一个实际的jsfiddle答案.;-) (12认同)
  • @JeanJimenez:好吧,它产生了 *I* 期望的结果。例如,如果 `x` 从 10 开始,`r1` 的值为 21,即 10+11。第一个 `x++` 表达式的值为 10,并且 `x` 递增到 11。第二个 `x++` 表达式的值为 11,`x` 递增到 12。 (3认同)
  • 如果使用`+ 1`代替`++`,这会是什么样子?添加数字之前或之后有没有办法增加? (2认同)

Jus*_*rce 39

  • ++x 递增值,然后评估并存储它.
  • x++ 评估该值,然后递增并存储它.
var n = 0, m = 0;

alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */
Run Code Online (Sandbox Code Playgroud)

请注意,++x在可能的情况下使用会有轻微的性能优势,因为您读取变量,修改变量,然后评估并存储变量.与x++操作员比较,读取值,评估,修改,然后存储.


unc*_*exo 12

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

让我们分配0x

let x = 0;
Run Code Online (Sandbox Code Playgroud)

让我们从后自增开始

console.log(x++); // Outputs 0
Run Code Online (Sandbox Code Playgroud)

为什么?

让我们分解一下x++表达式

x = x;
x = x + 1;
Run Code Online (Sandbox Code Playgroud)

第一个语句返回的x值为0

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

第二条语句返回该表达式的值,x + 1(0 + 1) = 1

请记住此状态下的值x1

现在让我们从预增量开始

console.log(++x); // Outputs 2
Run Code Online (Sandbox Code Playgroud)

为什么?

让我们分解一下++x表达式

x = x + 1;
x = x;
Run Code Online (Sandbox Code Playgroud)

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

第二条语句返回其值,x因此2x = 2返回2

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


Chr*_*ris 7

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

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


小智 5

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
Run Code Online (Sandbox Code Playgroud)

jsfiddle