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

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于else if 的疑問

我用傳統(tǒng) js 方法編寫小球動畫時發(fā)現(xiàn)三個球球速一個比一個快,而且不能回滾,第三個球一直在原位震動,后來發(fā)現(xiàn)是因為我把代碼里的 else { if... else...}當成了 else if.. else...,但我不知道這二者有什么區(qū)別,為什么最后動畫結(jié)果不一樣?

錯誤代碼:

function?animation(ball,?distance,?cb){
		setTimeout(function(){
			var?marginLeft?=?parseInt(ball.style.marginLeft,?10);
	????	if?(marginLeft?===?distance){
	????		cb?&&?cb();
	????	????}?
	????	else?if?(marginLeft?<?distance){
	????????????marginLeft++;
	????	}?
	????	?????else?{
	????		marginLeft--;
	????	}
	?????????????ball.style.marginLeft?=?marginLeft?+?'px';
	?????????????animation(ball,?distance,?cb);
	????	},?13)
	}

正確代碼:

function?animation(ball,?distance,?cb){
		setTimeout(function(){
			var?marginLeft?=?parseInt(ball.style.marginLeft,?10);
	????	if?(marginLeft?===?distance){
	????		cb?&&?cb();
	????	????}?
	????	else{?if?(marginLeft?<?distance){
	????????????marginLeft++;
	????	}?
	????	?????else?{
	????		marginLeft--;
	????	}
	?????????????ball.style.marginLeft?=?marginLeft?+?'px';
	?????????????animation(ball,?distance,?cb);
	?????????}
	????	},?13)
	}

求解答

正在回答

2 回答

你這個if 和else if 和else不管怎么判斷 ?多會一直調(diào)用自己本身,這是關鍵,你可以理解一下,當marginLeft==distance的時候函數(shù)還能調(diào)用本身的結(jié)果是什么,無限的cb()被調(diào)用,cb也就是ball2,ball3的函數(shù), N個cb意味著ball2,ball3的marginLeft 增長速度爆炸。左右晃是因為ball3 改變distance的原因,他同時在執(zhí)行兩個判斷,舊distance和新distance的判斷

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

當條件不滿足 if時 就會執(zhí)行else if里面的代碼。所以當?shù)谝粋€ 求 滾動到初始位置之前 一直執(zhí)行 elseif.

至于抖動是因為 小球滾動動到 9Px位置時,下一次又執(zhí)行else if 又向前滾動,來回循環(huán) 所一看家的是抖動

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

舉報

0/150
提交
取消
進擊Node.js基礎(二)
  • 參與學習       76728    人
  • 解答問題       242    個

本教程帶你攻破 Nodejs,讓 JavaScript流暢運行在服務器端

進入課程

關于else if 的疑問

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號