为了账号安全,请及时绑定邮箱和手机立即绑定

++a和a++ 有什么区别?

++a和a++ 有什么区别?

正在回答

11 回答

可以换个思路,不考虑两个变量,但看值。

var a  = 5;
alert(a++);//5
alert(a);//6
/*
    a 值自增1;
    (a++) 值与自增 1 前的 a 值 5 相等;
*/
var  a  = 5;
alert(++a);//6;
alert(a) ;//6;
/*
    a 值自增1;
    (++a)值与自增 1 后的 a 值 6 相等;
*/



0 回复 有任何疑惑可以回复我~

可以换个思路,不考虑两个变量,但看值。

var a  = 5;

那么,alert(a++);弹出框内值为 5;也就是说 (a++ )的值为5 ,和此前的 a 值相等。

但是,alert(a); 弹出框内值为6;a 值在原始 a 值的基础上自增 1;

var  a  = 5;

alert(++a);弹出 6;

alert(a) ;弹出值也为6;

相应的 (++a)的值为6,和自增 1 后的 a 值相等。

1 回复 有任何疑惑可以回复我~
#1

卡兰尼克

好认真,,,被感动了一下
2016-10-25 回复 有任何疑惑可以回复我~

var a1,a2,b,c;

a1 = 5;

a2 = 5;

b = a1++;

c = ++a2;

则:a1 = 6 ;a2 = 6;

但:b = 5 ; c = 6;

-------------------------

var  x = 5;

var  y = 5;

x = x++;

y = ++y ;

则: x = 5 ; y = 6 ;

1 回复 有任何疑惑可以回复我~
#1

little_star 提问者

为什么最终a1 = 6 ;a2 = 6;a1和a2赋值之后并没有进行运算啊
2016-04-12 回复 有任何疑惑可以回复我~
#2

鬼擎火 回复 little_star 提问者

对于变量 a 而言,a++和++a都是自增1;作为表达式 b = a++;和 b=++a;时,对b的赋值不同。前者先对b赋值a,然后a自增1;后者a先自增1,然后对b赋值a值。
2016-04-12 回复 有任何疑惑可以回复我~
#3

鬼擎火 回复 鬼擎火

出现a++ 和 ++a,则已经在进行自增运算了。
2016-04-12 回复 有任何疑惑可以回复我~
#4

little_star 提问者 回复 鬼擎火

也就是相当于a++和++a不管是不是只重新赋值给b(b=a++或b=++a),而没有重新赋值给a自身(a=++a或a=a++),最终a的值都会受b的赋值运算影响而改变自身a的值,对吗?
2016-04-12 回复 有任何疑惑可以回复我~
#5

little_star 提问者 回复 鬼擎火

var a1,b; a = 5; b = (a++)*1; 为什么这种情况在b运算的过程中a++也没运算呢?
2016-04-12 回复 有任何疑惑可以回复我~
#6

鬼擎火 回复 little_star 提问者

不是的。 var a=5; var b; b = a++ 和 b = ++a 中,a 的值并不会受到 b 的值的影响。a++ 和 ++a 本身就是一个自增运算。 b = a++ 相当于两步操作: b = a;//b=5; a = a + 1;//a=6; 最终:a=6;b=5; b = ++a 相当于: a = a+1; //a=6; b = a;//b=6 最终:a=6;b=6
2016-04-13 回复 有任何疑惑可以回复我~
#7

鬼擎火 回复 little_star 提问者

在 var a,b; a = 5; b = (a++)*1; 运算结果:a=6;b=5;
2016-04-13 回复 有任何疑惑可以回复我~
#8

秋山君 回复 鬼擎火

看到这里,突然就明白了!谢谢!
2016-05-24 回复 有任何疑惑可以回复我~
#9

阿皎就是茕兔丶 回复 秋山君

那如果是b=(a++)*a是不是就是b=5*6了
2016-07-01 回复 有任何疑惑可以回复我~
查看6条回复
for(var i=0;i<5;){
    document.write(++i)
}

这里输出的是1,2,3,4,5,因为++i是先加1再赋值

for(var i=0;i<5;){
    document.write(i++)
}

这里输出的是0,1,2,3,4,因为i++是先赋值再加1

3 回复 有任何疑惑可以回复我~
#1

little_star 提问者

++i还是i++会是不同运算结果只对循环结构有影响吗?
2016-04-12 回复 有任何疑惑可以回复我~
#2

温水里的小白 回复 little_star 提问者

for(var i=0;i<5;){ document.write(i) }我输入这个样式,马丹电脑网页直接卡死了-。-
2016-05-23 回复 有任何疑惑可以回复我~
#3

慕田峪9273182 回复 温水里的小白

你这是个死循环,document.write(i)会一直执行,当然会卡死
2016-05-26 回复 有任何疑惑可以回复我~

运算时,++a先完成赋值并立即参与到运算,而如果是a++,就以a的初始值为准参加运算,然后a在进行赋值,a=a++;

0 回复 有任何疑惑可以回复我~

++a先自增后取值,a++先取值后自增;前提是在分号之前

0 回复 有任何疑惑可以回复我~

a++是先处理a,之后a自增,++a是,a先自增,然后处理a

0 回复 有任何疑惑可以回复我~

a++ 和 ++a的相同点都是给a+1,不同点是a++是先参加程序的运行再+1,而++a则是先+1再参加程序的运行

3 回复 有任何疑惑可以回复我~

++a 先加1在运算, a++ 运算后再自加1

0 回复 有任何疑惑可以回复我~


一般是相等的  当赋值时有所不同  ++a 先运算后赋值    a++先赋值后运算

0 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468189    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

++a和a++ 有什么区别?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信