++someVariable 与 JavaScript 中的 someVariable++

IT技术 javascript increment unary-operator
2021-01-29 06:28:44

在 JavaScript 中,您可以在变量名++之前 ( pre-increment ) 或之后 ( post-increment )使用运算符如果有的话,这些增加变量的方法之间有什么区别?

6个回答

与其他语言相同:

  • ++x (pre-increment) 意思是“增加变量;表达式的值是最终值”
  • 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]
我想知道为什么如果你做这个操作 const r1 =(x++)+(x++); 根据您的示例,它不会产生预期的结果。
2021-03-13 06:28:44
如果你使用+ 1而不是,这会是什么样++有没有办法在添加数字之前或之后增加?
2021-03-16 06:28:44
诅咒,如果我没有停下来加载一个实用的 jsfiddle 答案,我几乎打败了你。;-)
2021-03-18 06:28:44
@JeanJimenez:嗯,它产生了期望的结果例如,如果x从 10 开始,则 的值为r121,即 10+11。第一个x++表达式的值是 10,并x增加到 11。第二个x++表达式的值是 11,并x增加到 12。
2021-03-23 06:28:44
亲爱的 @JonSkeet,感谢您的超快速响应,我是学习 JavaScript 的新手,我的困惑在于为什么一个递增而另一个没有。
2021-04-01 06:28:44
  • ++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++您读取值、评估它、修改它然后存储它操作符相反

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

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

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

让我们分配0x

let x = 0;

让我们从后增量开始

console.log(x++); // Outputs 0

为什么?

让我们分解x++表达

x = x;
x = x + 1;

第一条语句返回的值x0

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

第二个语句返回这个x + 1表达式的值,它是(0 + 1) = 1

请记住x在此状态下的值1

现在让我们从预增量开始

console.log(++x); // Outputs 2

为什么?

让我们分解++x表达

x = x + 1;
x = x;

第一条语句返回此x + 1表达式的值,即(1 + 1) = 2

第二条语句返回的值x2如此x = 2因而回报2

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

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

提琴手