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

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

return如何終止each迭代

return如何終止each迭代

當年話下 2019-03-19 17:19:31
問題:我自定義了一個each迭代函數,想比較兩個數組是否一致。如果遍歷過程中發現不一樣,則退出循環。如何退出循環現在有些疑問。代碼:/*    自己實現迭代器*/const each = function(arr,callback){    for(var i=0;i<arr.length;i++){        callback.call(arr[i],i,arr[i]);    }}/*     比較兩數組是否一樣  -----方式一*/const compare = function(arr1,arr2){    if(arr1.length !== arr2.length){        console.log("兩數組長度不一致");        return;    }    each(arr1,function(index,item){        if(item !== arr2[index]){            console.log("兩數組不一致");            return;        }    })}/*     比較兩數組是否一樣-----方式二*/const compare = function(arr1,arr2){    if(arr1.length !== arr2.length){        console.log("兩數組長度不一致");        return;    }    var breaked = false;    each(arr1,function(index,item){        if(breaked){            return;        }        if(item !== arr2[index]){            console.log("兩數組不一致");            breaked = true;        }    })}疑問:使用方式一,如果不相等,循環還會繼續執行,不會終止。但是使用方式二可以終止循環。請問兩方式的區別在哪里。
查看完整描述

5 回答

?
幕布斯1329279

TA貢獻8條經驗 獲得超0個贊

問題的根源在你實現的each中,callback執行的結果在each中看沒有任何意義,一直在for循環中。另外,你的兩種方式實際上效果是一樣的,不信你在


if(breaked){

? ? return;

}

加上console.log試試


查看完整回答
反對 回復 2019-03-29
?
幕布斯1329279

TA貢獻8條經驗 獲得超0個贊

可以用 return new Error() ^_^||


查看完整回答
反對 回復 2019-03-29
?
幕布斯1329279

TA貢獻8條經驗 獲得超0個贊

任何終止都只是終止當前函數,無法終止外部函數。


查看完整回答
反對 回復 2019-03-29
?
幕布斯1329279

TA貢獻8條經驗 獲得超0個贊

方式一 each里面是回調函數。你在回調函數里return只是把回調函數return了。而不是你自己定義的那個函數


查看完整回答
反對 回復 2019-03-29
  • 5 回答
  • 0 關注
  • 713 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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