猿问

i++ 和++i的差別

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

 <HEAD>

 <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>

<TITLE> New Document </TITLE>

<script>

var countup = function(){

  var $div = $('div'),

    i = parseInt($div.text());

  $div.html(++i);

  setTimeout(countup, 1000);

};

countup();

</script>

 </HEAD>

<body>

<div>0</div>

</body>

</HTML>


假设我这边把++i换成i++,为什么就不会计时了,这是什么逻辑呢?

Be_Stronger
浏览 2035回答 8
8回答

stone310

a=++i,先让i+1,再赋值给a;a=++i,先将i赋值给a,再让i+1;如上面这个例子,  先说++i的情况,第一次循环:$div.html(++i)这句话之前,i=0,因此,先加1,再传递给html,所以html显示为1第二次虚幻:因为刚才div的html为1了,所以$div.html(++i)这句话之前,i=1,再加1,再传递给html,显示2所以++i是可以运行的;i++的情况,第一次循环:$div.html(++i)这句话之前,i=0,先将i=0传递给html,再加1,所以第一次循环结束时,html显示0,但是此时的i是1;第二次循环:i是1,但是经过这句话i = parseInt($div.text()),i又变成了html的值(即0),然后又重复第一次循环,所以你看到一直是0;你可以在  $div.html(++i);前后加上alert(i)进行测试

微积分2016

a=i++ 其实是 a=i;i++; a=++i    其实是 i++;a=i;

ForDeer

相同点:    i++和++i都是自增1.不同点:    ++i是先做i+1,再执行后面语句。(执行完本条语句i=i+1)    i++是先执行完后面语句,才+1。(执行完后面语句i=i+1)为什么不计时:    可以理解为没有执行完后面语句,也就是循环未结束(无限循环)经过 i = parseInt($div.text()),i也是0。什么逻辑:    就是这个逻辑。

W_YYJ

++i 是先加后用,后面用的 i 加1后的值;  i++是先用后加,后面用的是还是原来的 i

咎咎咎

上面的答案都不严谨 a=i++是a=(i++的返回值) a=++i是a=(++i的返回值) i++返回i未自增之前的值 ++i返回i自增后的值

chwech

开发时尽量避开两者之间的区别,只需知道,它们都是把 i 的值 加 1 即可。不要给自己找麻烦

大白__

唯一的区别: ++i,是在运算i之前给i先加1,在参加运算 i++,是参加完运算后给i加1

MarlboroKay

建议你看看慕课的C语言基础,看完应该就能明白了。最简单一句话,++i,就是先加1,在赋值。i++,就是先赋值,再加1。本身,他俩都是实现自增,但是放到循环中的话,就会有影响。例如,你用了setTimeout()方法,如果换成i++的话,一秒后执行的结果是不变的。建议,你把setTimeout()换成setInterval() 自己仔细体会一下。望采纳
随时随地看视频慕课网APP
我要回答