亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

最近看了一道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 關注
  • 2922 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號