我只是好奇一件事。 Javascript中的一个小例子
var a = 1;
a = a++;
console.log(a); // 1
var b = 1;
b = ++b;
console.log(b); // 2
var c = 1;
c += 1;
console.log(c); //2

我理解为什么它会以b
和c
的方式运行,但是a
呢?
首先,代码进行赋值a = a
,实际值保持不变,但它应该(如我所见)增加并增加每个单元的值a
。但这没有发生。为什么呢?
答案 0 :(得分:7)
var a = 1; a = a++;
1
已分配到a
a++
评估为1
a++
将a
增加到2
a = {result of previous evaluation}
将1
分配给a
,以便再次1
var b = 1; b = ++b;
1
已分配到b
++b
将b
增加到2
++b
评估为2
b = {result of previous evaluation}
将2
分配给b
,以便2
仍然答案 1 :(得分:3)
这就是JavaScript的工作原理。在a++
的情况下,返回值实际上是原始值。您已将原始值再次分配给a
。
答案 2 :(得分:3)
这就是post increment的工作原理
如果使用postfix,在操作数之后使用运算符(例如,x ++),则在递增之前返回该值。
a = a ++;
当a ++执行a为2且表达式返回1且a被赋值为1时。
这就是你在增量之前看到这个值的原因。
请注意,如果您没有分配回来,则会看到a
的递增值。简而言之,你可以通过赋值将ovverriding增加的值。
var a = 1;
a++;
console.log(a); // 1

答案 3 :(得分:3)
有传言说,要执行++ a,内存中的值会增加然后返回。对于a ++,首先将值存储在创建的临时变量中,然后递增主变量的值并返回临时变量的值 - 因此"费用"用于创建临时变量增加。
答案 4 :(得分:2)
a= a++
返回之前的值>>它的值。
您可以使用a++
答案 5 :(得分:2)
a++
返回之前自我增加的值;
虽然++a
返回之后自我增加的值;
所以这就是为什么当你打电话给a = a++
时,a等于1;
答案 6 :(得分:1)
后缀运算符返回a的原始值。 所以a通过postfix ++运算符增加,但是然后通过赋值运算符的返回值来覆盖a,这是递增之前的值。
答案 7 :(得分:1)
a
的{{1}}的返回值是临时存储用于分配,然后增量发生,1
现在具有a
的值,然后是以前的储值发生了。
2
与
相同a = a++;
答案 8 :(得分:1)
var a = 1;
// Here a++ means a = a; then a = a + 1
a = a++; // so you are assign first step value inside a so thats way a = 1
console.log(a); // 1
表示存储的值是当++等于a = a时的时间。您只需指定a的值并替换该值。