Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的后缀和前缀增量_Javascript - Fatal编程技术网

JavaScript中的后缀和前缀增量

JavaScript中的后缀和前缀增量,javascript,Javascript,我只是好奇一件事。Javascript中的一个小例子 var a=1; a=a++; console.log(a);//1. var b=1; b=++b; 控制台日志(b);//2. var c=1; c+=1; 控制台日志(c)//2在a++的情况下,返回值实际上是原始值。您已将原始值再次指定给a。这就是工作原理 如果使用后缀,在操作数后加运算符(例如,x++),则返回递增前的值 a=a++ 当一个++执行一个is 2时,表达式返回1,并将a赋值给1 这就是您在增量之前看到值的原因 请注意

我只是好奇一件事。Javascript中的一个小例子

var a=1;
a=a++;
console.log(a);//1.
var b=1;
b=++b;
控制台日志(b);//2.
var c=1;
c+=1;

控制台日志(c)//2
a++
的情况下,返回值实际上是原始值。您已将原始值再次指定给
a

这就是工作原理

如果使用后缀,在操作数后加运算符(例如,x++),则返回递增前的值

a=a++

当一个++执行一个is 2时,表达式返回1,并将a赋值给1

这就是您在增量之前看到值的原因

请注意,如果不向后赋值,则会看到
a
的增量值。简而言之,您可以通过将递增的值重新赋值来克服它

var a=1;
a++;

console.log(a);//1
后缀运算符返回a的原始值。
因此,a由后缀++运算符增加,但随后通过指定运算符的返回值(即递增之前的值)覆盖a。

a=a++
返回递增之前的a值


您可以只使用
a++

据传,要执行++a,内存中的值会增加,然后返回。而对于a++,首先将值存储在创建的临时变量中,然后增加主变量的值并返回临时变量的值-因此创建临时变量的“费用”增加。

1
a
的返回值临时存储以供分配,然后发生增量,
a
现在的值为
2
,然后发生前一个存储值的分配

a = a++;
是一样的吗

a = (temp = a, a++, temp);
  • 1
    被分配给
    a
  • a++
    被评估为
    1
  • a++
    a
    增加到
    2
  • a={上一次评估的结果}
    1
    分配给
    a
    ,因此它再次是
    1
  • 1
    被分配给
    b
  • ++b
    b
    增加到
    2
  • ++b
    评估为
    2
  • b={先前评估的结果}
    2
    分配给
    b
    ,因此它仍然是
    2

  • a++
    返回自增前的值; 而
    ++a
    返回自增大后的值

    这就是为什么当你调用a=a++时,a等于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时存储值。您只需指定a的值并替换该值。

    我认为
    a++
    意味着增量a,但不指定。而
    ++b
    是增量和赋值。因此,在这一点上:
    a=a++
    a是递增的,但分配回其原始值。可能的重复项通常不会执行
    a=a++
    a=++a
    。如果要将
    a++
    ++a
    的返回值赋值,则不希望将它们赋值给要递增的值。@Eddie否,这与递增后与递增前无关。这是关于
    a=a++的意思和作用。不要仅仅基于标题。帖子上的答案也回答了这篇帖子@徐狐
    
    var b = 1;
    b = ++b;
    
    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