💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 详解a++和++a的区别和注意点 1. ++ 是一个“自增运算符”,自增运算符有两种形式:前缀自增(++a)和后缀自增(a++) 2. 赋值顺序不同: `b = a++;` 会先把a的值赋给b, 然后自增1 `c = ++a;` a会先自增1, 然后把增1以后的结果赋给c 3. 在计算过程中传递的值不同: ``` a = 10; console.log(a++); //此时输出的结果为10 ``` ``` a = 10; console.log(++a); //此时输出的结果为11 ``` 在上例中,控制台输出(a++)结果为10,(++a)结果为11,因为a++是先传递值在进行自增的一个过程,而++a先自增再传递值 ``` a = 10; a++; console.log(a); //此时输出结果为11 ``` 在本例中,因为`a++`后面有个结束分号,所以此时a的值已经发生了自增1改变 4. 计算过程中二者均会导致a的值发生改变 ``` a = 10; b = a++; //b = 10, a = 11 c = ++a; //c = 12, a = 12 console.log(b, c, a); //10, 12, 12 ``` 因为a经过了两次自增,所以最后结果为12 ``` a = 10; b = a++ +10+ ++a; //b = 10+10+(10+1+1) console.log(b) //32 console.log(a) //12 ``` 上述计算可看成b = (a++) +10+ (++a),在第一个a++中传入计算的值为10, 但是之后经历自增1,所以在(++a)中,可以看作(++11) 5. console.log()甚至也会造成计算 ``` a = 10; console(a++); //10 console(a); //11 ``` 6. **总结: `a++`先赋值,后自增 `++a`先自增,后赋值** 7. 而`a--` 、`--a`同理 ``` a = 10; console.log(a--); //10 console.log(a); //9 ``` ``` a = 10; console.log(--a); //9 console.log(a); //9 ``` 8. 最后附上一个计算题 ``` a = 1; b = a++ + ++a + a++ + ++a; // 1+3+3+5 console.log(b); //12 ``` ``` a = 1; b = --a + a-- + --a + a--; //0 0 -2 -2 console.log(b); //-4 ```