javascript大家所熟知中的for是一個循環體,循環體其中的break和continue也是大家都比較熟悉的功能,相信大家對它們的用法不會陌生,本文不是介紹其功能,本文假設你已經熟悉break和continue的語意和用法。
今天在研究某系統時發現其代碼有這樣一個結構(已簡化):
1 var result = false; 2 point: 3 { 4 var obj = { key: 1 }; 5 for (var key in obj) { 6 // ... 7 break point; 8 } 9 result = true; 10 } 11 alert(result);
咋看一下以為是代碼錯誤,甚至於Visual Studio對此代碼沒辦法進行正確的格式化。可是又仔細一看語意還是很清晰的,也就是從for循環內部break到指定的point這個位置,而且此系統不應該犯這樣的錯誤的。因為自己沒有這樣使用過,遂進行了一番測試,測試結果果然是自己學術不精啊。。。這是javascript既有的語法,break是可帶位置標簽的,查閱相關文檔發現continue一樣也是可以帶位置標簽的。
他們的的語法分別為:
break [label];
continue [label];
我們知道在循環體當中break只能跳出當前循環,而當break帶上了標簽,就能隨意跳到某位置,可輕松的跳出多重循環,此外switch中的break也是一樣可以這樣使用。
參考文檔:
https://developer.mozilla.org/en/JavaScript/Reference/Statements/break
http://www.w3school.com.cn/js/pro_js_statements_break_continue.asp