一般有什麼不對的break
聲明。但是,如果這些塊出現在代碼庫的不同位置,則代碼可能會成爲問題。在這種情況下,對於重複代碼,break
語句的代碼很小。
您可以輕鬆地提取搜索到一個可重複使用的功能:
function findFirst(objectList, test)
{
for (var key in objectList) {
var value = objectList[key];
if (test(value)) return value;
}
return null;
}
var first = findFirst(objectList, function(object) {
return object.test == true;
}
if (first) {
//do some process on object
}
如果你總是處理以某種方式找到的元素,可以進一步簡化代碼:
function processFirstMatch(objectList, test, processor) {
var first = findFirst(objectList, test);
if (first) processor(first);
}
processFirst(
objectList,
function(object) {
return object.test == true;
},
function(object) {
//do some process on object
}
}
所以,你可以使用JavaScript中的功能特性使您的原始代碼更富有表現力。作爲一種副作用,這會將break
聲明從常規代碼庫中推送到輔助函數中。
我知道你在說什麼,但是每個人都在正確的軌道上 - 休息很好,特別是對於小名單。我的大列表通常來自數據庫查詢,如果必須使用LIMIT函數,那麼只需拉取一部分記錄。簡短的回答 - 對使用「break」或「continue」不感到不好 – jbnunn 2009-12-11 17:20:56
您的代碼不會以這種方式工作,因爲for..in運算符將始終迭代對象的鍵(字符串)。你可能的意思是這樣的: for(var key in objectList) { var object = objectList [key]; ... } – 2010-01-04 15:10:48