第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

關(guān)于while和pop

為什么是用while循環(huán)來判斷pop?而不是用if?而且while循環(huán)不是如果不增加條件中所用變量的值,該循環(huán)永遠(yuǎn)不會(huì)結(jié)束,可能導(dǎo)致瀏覽器崩潰嗎?還有一個(gè)不懂的地方,就是這里:

while(balls.length?>?count){
????????balls.pop();
????}

不是說從count到balls.length-1的小球都是可以刪掉的,可是pop不是只能刪除數(shù)組最后一個(gè)元素嗎?可以刪掉的小球難道就只有一個(gè)嗎,不會(huì)有兩個(gè)三個(gè)?

我把我這里的代碼貼一下:

function?updateBalls(){
????for(?var?i?=?0?;?i?<?balls.length?;?i++){
????????balls[i].x?+=?balls[i].vx;
????????balls[i].y?+=?balls[i].vy;
????????balls[i].vy?+=?balls[i].g;
????????if(?balls[i].y?>=?WINDOW_HEIGHT?-?RADIUS?){
????????????balls[i].y?=?WINDOW_HEIGHT?-?RADIUS
????????????balls[i].vy?=?-balls[i].vy*0.6;
????????}
????????var?count?=?0;??????//記錄保留在畫布中小球的數(shù)量
????????if(?balls[i].x?+?RADIUS?>?0?&&?balls[i]?-?RADIUS?<?WINDOW_WIDTH?){??????//這個(gè)序號(hào)為i的小球仍然在畫布中
????????????balls[count++]?=?balls[i];
????????}
????}
????while(balls.length?>?count){
????????balls.pop();
????}
}


正在回答

3 回答

我覺得之所以用while而不是if,因?yàn)閣hile是循環(huán)執(zhí)行,如果滿足條件會(huì)一直執(zhí)行,所以不斷刪除滿足條件的小球。而如果是if的話,那么執(zhí)行一次updateBalls函數(shù)只執(zhí)行一次 if也就是說只刪除一個(gè)小球,while的話,執(zhí)行一次upadate會(huì)執(zhí)行好多次while里的代碼刪除多個(gè)小球。 pop執(zhí)行一次刪除一個(gè),執(zhí)行多次就刪除多個(gè)。。。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉3584185 提問者

非常感謝!
2016-10-21 回復(fù) 有任何疑惑可以回復(fù)我~
#2

慕后端9417217

謝謝!
2017-08-17 回復(fù) 有任何疑惑可以回復(fù)我~

同學(xué) ,你這個(gè)的原因出現(xiàn)在var?count?=?0; 定義地方寫錯(cuò), 應(yīng)該寫在循環(huán)之外,不然你這個(gè)每次循環(huán)都是重新定義為0。

0 回復(fù) 有任何疑惑可以回復(fù)我~

if是判斷,while是循環(huán),老師先循環(huán)了小球數(shù)組,把還在區(qū)域內(nèi)可見的小球重新排列在了原來數(shù)組的前面,如果有n個(gè)小球可見,那么在這個(gè)數(shù)組內(nèi),第N個(gè)后面的小球都應(yīng)該被刪除。這里不能用if的原因是,一次update的執(zhí)行不能只考慮一個(gè)小球消失了,就像不能只考慮一個(gè)小球的位置刷新了一樣,有可能是好幾個(gè)小球的位置都刷新了,同時(shí)又有很多小球消失了,所以需要把小球數(shù)組遍列,對(duì)每個(gè)小球進(jìn)行判斷。用到了while,這里的while循環(huán)并不是死循環(huán),這個(gè)循環(huán)有個(gè)條件,就是如果當(dāng)前數(shù)組的長(zhǎng)度大于在屏幕中可見的小球的個(gè)數(shù),那么證明還沒有刪除完,一次pop的執(zhí)行會(huì)刪除一個(gè)元素,所以當(dāng)前數(shù)組長(zhǎng)度會(huì)不斷減小,當(dāng)當(dāng)前數(shù)組的長(zhǎng)度等于可見小球的個(gè)數(shù),該循環(huán)便會(huì)停止。這里用if肯定是不可以的,for()循環(huán)還可以,但是while用起來比for循環(huán)方便些。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

關(guān)于while和pop

我要回答 關(guān)注問題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)