在雙重循環或多重循環中判斷條件,條件符合時跳出整個嵌套循環體是常見的程序邏輯。在Javascript中有哪些跳出的方法呢?樓主簡單整理了一下。
一. 使用多個break語句跳出
var breaked = false; for (var i = 0; i < 3; i++) { for (var j = 0; j < 3; j++) { if (i === 1 && j === 1) { breaked = true; break; } console.log('i=' + i + ',j=' + j); } if (breaked) { break; } }
這是比較常見的跳出方法,雙重循環的時候還可以接受,一旦循環的次數多了break語句會反復出現,代碼閱讀起來並不是很友好。
二. 使用break+label的形式跳出
loop: for (var i = 0; i < 3; i++) { for (var j = 0; j < 3; j++) { if (i === 1 && j === 1) { break loop; } console.log('i=' + i + ',j=' + j); } }
Javascript中是不能使用goto語句的,但是label可以和break、continue語句聯合使用。在最外層的循環之外打上自定義標簽,並在break時使用,就可以退出最外層循環了。當然,label這種匯編語言時期的上古遺跡是不被推薦使用的,在大一的C語言課上老師就教導我們這樣的編程習慣會打斷人的結構性思維等等…而且同事閱讀起來也會很別扭。
三. 使用iife + return
(function () { for (var i = 0; i < 3; i++) { for (var j = 0; j < 3; j++) { if (i === 1 && j === 1) { return; } console.log('i=' + i + ',j=' + j); } } })();
在循環體外包一層函數,想退出就退出,還能return返回值,簡單粗暴,大家都能看明白,簡直不要太好,哈哈