js for終止循環(huán) 跳出多層循環(huán)
今天腳本之家小編寫(xiě)帶代碼的時(shí)候遇到一段代碼,需要終止運(yùn)行for,通過(guò)遍歷json數(shù)據(jù)實(shí)現(xiàn)判斷
<script> var Tid="55555"; var jb51cp = [ {id:66666,Cpurl:"https://baidu.com"}, {id:55555,Cpurl:"http://chabaoo.cn"} ]; for(var i = 0; i < jb51cp.length; i++){ if(jb51cp[i].id==Tid){ var thevalue=jb51cp[i].Cpurl; break; } } alert(thevalue); </script>
通過(guò)上面的代碼,完美解決了我的需求,但感覺(jué)性能不高,建議用switch函數(shù),json方便批量輸出,通過(guò)for判斷會(huì)降低性能。注意查看break的地方。
示例代碼
var a = [1,2,3,4,5,6,7,8]; // 8個(gè)數(shù) var b = [11,12,13,14,15,3,16,17]; //8個(gè)數(shù) testFor(); console.log('555') function testFor() { for(var k=0;k<a.length;k++){ console.log('444'); for(var i=0;i<a.length;i++){ for(var j=0;j<b.length;j++){ if( a[i]==b[j] ){ return false; } console.log('111'); } console.log('2222'); } console.log('333'); } } 輸出: // 1次444 // 8次111 // 1次222 // 8次111 // 1次222 // 5次111 // 1次555
可見(jiàn) return 會(huì)直接跳出多層循環(huán),返回調(diào)用的方法外部
原因: js里for是沒(méi)有局部作用域的概念,方法才能一個(gè)局部作用域
return將會(huì)跳出當(dāng)前局部作用繼續(xù)執(zhí)行下面的方法
注意:
1.這里for循環(huán)如果直接放在全局作用域下執(zhí)行而不被一個(gè)方法包裹,
將直接導(dǎo)致寫(xiě)在for后的代碼永遠(yuǎn)不會(huì)被執(zhí)行;
2.如遇到邏輯特別復(fù)雜多層循環(huán)的時(shí)候,會(huì)遇到一些迭代器之類的方法,
這種迭代器實(shí)現(xiàn)的不同,會(huì)出現(xiàn)另一種情況,即不會(huì)跳出任何循環(huán),
循環(huán)仍然繼續(xù),只是當(dāng)前循環(huán)if后的代碼不會(huì)被執(zhí)行一次,下一次循環(huán)開(kāi)始時(shí),
仍然會(huì)執(zhí)行if后的代碼
如:
var cc = 'xx';
Object.keys(o).forEach(function(key) {
var val = o[key];
if(cc == key){
return false;
}
console.log(key);
});
此外還有
break;
continue;
語(yǔ)句
break 語(yǔ)句跳出循環(huán)后,會(huì)繼續(xù)執(zhí)行該循環(huán)之后的代碼 (退出循環(huán))
continue continue 語(yǔ)句中斷循環(huán)中的迭代,如果出現(xiàn)了指定的條件,然后繼續(xù)循環(huán)中的下一個(gè)迭代。(跳過(guò)當(dāng)前迭代,進(jìn)入下次迭代)
這兩個(gè)語(yǔ)句可以指定label從而可以退出特定的循環(huán)
如
bbq: for(var j=0;j<a.length;j++){ ccc: for(var i =0;i<a.length;i++){ if( i==5 ){ break bbq; //直接跳出bbq外層循環(huán) } } } 或者: function testFor() { bbq: for(var k=0;k<a.length;k++){ console.log('444'); ccc: for(var i=0;i<a.length;i++){ ddd: for(var j=0;j<b.length;j++){ if(j == 2){ break; } console.log('j '+j); } console.log('i '+i); } console.log('k '+k); } }
// 只會(huì)每次循環(huán)j==2時(shí)退出ddd循環(huán)然后外面的循環(huán)都會(huì)繼續(xù)循環(huán)
- JavaScript跳出循環(huán)的三種方法(break, return, continue)
- javaScript如何跳出多重循環(huán)break、continue
- JS forEach跳出循環(huán)2種實(shí)現(xiàn)方法
- JS跳出循環(huán)的5種方法總結(jié)(return、break、continue、throw等)
- JS中的幾種循環(huán)和跳出方式
- Js跳出兩級(jí)循環(huán)方法代碼實(shí)例
- JS中跳出循環(huán)的示例代碼
- JavaScript中遍歷跳出循環(huán)方法總結(jié)
- JavaScript跳出循環(huán)的幾種常用方法總結(jié)
相關(guān)文章
nuxt配置通過(guò)指定IP和端口訪問(wèn)的實(shí)現(xiàn)
這篇文章主要介紹了nuxt配置通過(guò)指定IP和端口訪問(wèn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01javascript 原型與原型鏈的理解及應(yīng)用實(shí)例分析
這篇文章主要介紹了javascript 原型與原型鏈的理解及應(yīng)用,結(jié)合實(shí)例形式分析了javascript原型與原型鏈的具體原理、功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-02-02JavaScript實(shí)現(xiàn)無(wú)窮滾動(dòng)加載數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)無(wú)窮滾動(dòng)加載數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05微信小程序?qū)崿F(xiàn)上傳照片代碼實(shí)例解析
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)上傳照片代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08JavaScript事件Event對(duì)象詳解(屬性、方法、自定義事件)
Event對(duì)象代表事件的狀態(tài),比如事件在其中發(fā)生的元素、鍵盤(pán)按鍵的狀態(tài)、鼠標(biāo)的位置、鼠標(biāo)按鈕的狀態(tài),這篇文章主要給大家介紹了關(guān)于JavaScript事件Event對(duì)象(屬性、方法、自定義事件)的相關(guān)資料,需要的朋友可以參考下2024-01-01如何將JavaScript將數(shù)組轉(zhuǎn)為樹(shù)形結(jié)構(gòu)
我們經(jīng)常會(huì)碰到樹(shù)形數(shù)據(jù)結(jié)構(gòu),比方組織層級(jí)、省市縣或者者動(dòng)植物分類等等數(shù)據(jù),那么如何將JavaScript將數(shù)組轉(zhuǎn)為樹(shù)形結(jié)構(gòu),本文就詳細(xì)的來(lái)了解一下2021-06-06解析John Resig Simple JavaScript Inheritance代碼
上網(wǎng)也查了一下對(duì)些的理解說(shuō)的都不是很清楚. 在翻閱的同時(shí)找到了一篇 分析這篇文章的文章 哈哈 分析的很詳細(xì). (Join Resig 大師的 "Simple Inheritance" 使用了很多有意思的技巧) 如果你有時(shí)間, 并對(duì)此感興趣不訪好好看看. 我相信多少會(huì)有所收益的.2012-12-12IE和Firefox下javascript的兼容寫(xiě)法小結(jié)
學(xué)習(xí)js的朋友必須要知道或了解的知識(shí)2008-12-12實(shí)現(xiàn)連綴調(diào)用的map方法(prototype)
實(shí)現(xiàn)連綴調(diào)用的map方法(prototype),需要學(xué)習(xí)的朋友可以參考下。2009-08-08JS創(chuàng)建對(duì)象的十種方式總結(jié)
面向?qū)ο笫且环N重要的編程范式,如何靈活的創(chuàng)建對(duì)象,是對(duì)編程基本功的考驗(yàn),本來(lái)我們來(lái)探討一下JavaScript中創(chuàng)建對(duì)象的十種方式,感興趣的小伙伴可以了解下2023-10-10