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

最近看了一道js题,搞不懂,请教下

最近看了一道js题,搞不懂,请教下

var total=0;i=5;do{total+=i++;}while(i<7);console.log(total);total为什么是11,do while循环不是do里面的代码可定会执行一次?那时候total已经加完了应该是12啊
查看完整描述

4 回答

已采纳
?
Developer_Zuck

TA贡献112条经验 获得超42个赞

这个地方仅仅是一个i++与++i的区别,搞清楚了这二者的区别,你就知道结果为什么是11了。

在不进行运算的时候,这二者没有差别,但是在进行运算后,i++是在进行了运算后i+1,而,++i是在运算前进行i+1,

因此,你的代码中,total+=i++;这段代码,第一次i=0,进入循环,然后total=5,接着i+1=6出循环进行跟7做比较,显然,6<7,然后再一次进入循环,此时total=5+6,运算完后,i+1=7与7作比较,此时7<7不成立,结束循环。

核心问题还是i++与++i的区别


查看完整回答
1 反对 回复 2017-10-16
?
AllySu

TA贡献27条经验 获得超13个赞

容易搞混淆的时候,最好还原原来的运算语句。total+=i++;就写成total=total+i++;,然后要了解知识点:在进行赋值运算时,i++是先赋值(或取值)再自身+1,即上述语句为total=0+5,i把5交出去之后,自身才+1变为6,而++i则是自身+1变为6后才把6交出去。记忆:i++,i在前就先取值,++i,i在后就后取值!
雷军:are you okay?(´◔◡◔`)

查看完整回答
3 反对 回复 2017-10-17
?
慕尼黑4060497

TA贡献14条经验 获得超8个赞

你的代码中,total+=i++;这段代码,第一次i=0,进入循环,然后total=5,接着i+1=6出循环进行跟7做比较,显然,6<7,然后再一次进入循环,此时total=5+6,运算完后,i+1=7与7作比较,此时7<7不成立,结束循环。


查看完整回答
反对 回复 2017-10-16
?
Caballarii

TA贡献1123条经验 获得超629个赞

这种题很蠢

查看完整回答
反对 回复 2017-10-16
  • 4 回答
  • 0 关注
  • 2731 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信