js for終止循環(huán) 跳出多層循環(huán)
今天腳本之家小編寫帶代碼的時候遇到一段代碼,需要終止運行for,通過遍歷json數(shù)據(jù)實現(xiàn)判斷
<script> var Tid="55555"; var jb51cp = [ {id:66666,Cpurl:"https://baidu.com"}, {id:55555,Cpurl:"http://www.dbjr.com.cn"} ]; for(var i = 0; i < jb51cp.length; i++){ if(jb51cp[i].id==Tid){ var thevalue=jb51cp[i].Cpurl; break; } } alert(thevalue); </script>
通過上面的代碼,完美解決了我的需求,但感覺性能不高,建議用switch函數(shù),json方便批量輸出,通過for判斷會降低性能。注意查看break的地方。
示例代碼
var a = [1,2,3,4,5,6,7,8]; // 8個數(shù) var b = [11,12,13,14,15,3,16,17]; //8個數(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
可見 return 會直接跳出多層循環(huán),返回調用的方法外部
原因: js里for是沒有局部作用域的概念,方法才能一個局部作用域
return將會跳出當前局部作用繼續(xù)執(zhí)行下面的方法
注意:
1.這里for循環(huán)如果直接放在全局作用域下執(zhí)行而不被一個方法包裹,
將直接導致寫在for后的代碼永遠不會被執(zhí)行;
2.如遇到邏輯特別復雜多層循環(huán)的時候,會遇到一些迭代器之類的方法,
這種迭代器實現(xiàn)的不同,會出現(xiàn)另一種情況,即不會跳出任何循環(huán),
循環(huán)仍然繼續(xù),只是當前循環(huán)if后的代碼不會被執(zhí)行一次,下一次循環(huán)開始時,
仍然會執(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;
語句
break 語句跳出循環(huán)后,會繼續(xù)執(zhí)行該循環(huán)之后的代碼 (退出循環(huán))
continue continue 語句中斷循環(huán)中的迭代,如果出現(xiàn)了指定的條件,然后繼續(xù)循環(huán)中的下一個迭代。(跳過當前迭代,進入下次迭代)
這兩個語句可以指定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án)j==2時退出ddd循環(huán)然后外面的循環(huán)都會繼續(xù)循環(huán)
相關文章
JavaScript實現(xiàn)無窮滾動加載數(shù)據(jù)
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)無窮滾動加載數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05JavaScript事件Event對象詳解(屬性、方法、自定義事件)
Event對象代表事件的狀態(tài),比如事件在其中發(fā)生的元素、鍵盤按鍵的狀態(tài)、鼠標的位置、鼠標按鈕的狀態(tài),這篇文章主要給大家介紹了關于JavaScript事件Event對象(屬性、方法、自定義事件)的相關資料,需要的朋友可以參考下2024-01-01解析John Resig Simple JavaScript Inheritance代碼
上網也查了一下對些的理解說的都不是很清楚. 在翻閱的同時找到了一篇 分析這篇文章的文章 哈哈 分析的很詳細. (Join Resig 大師的 "Simple Inheritance" 使用了很多有意思的技巧) 如果你有時間, 并對此感興趣不訪好好看看. 我相信多少會有所收益的.2012-12-12