JavaScript中的后缀和前缀增量

时间:2018-03-29 07:40:53

标签: javascript

我只是好奇一件事。 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




我理解为什么它会以bc的方式运行,但是a呢? 首先,代码进行赋值a = a,实际值保持不变,但它应该(如我所见)增加并增加每个单元的值a。但这没有发生。为什么呢?

9 个答案:

答案 0 :(得分:7)

var a = 1;
a = a++;
  1. 1已分配到a
  2. a++评估为1
  3. a++a增加到2
  4. a = {result of previous evaluation}1分配给a,以便再次1
  5. var b = 1;
    b = ++b;
    
    1. 1已分配到b
    2. ++bb增加到2
    3. ++b评估为2
    4. 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的值并替换该值。