Возьмите приведенный ниже код в качестве примера:
function foo(b) {
var words = [ "Lorem", "ipsum", "dolor", "sit", "amet" ];
var i;
for(i in words) {
/a/.test(words[i]); // test 1
if(b) {
/b/.test(words[i]); // test 2
}
/c/.test(swordstr[i]); // test 3
}
}
Теперь иногда я не хочу выполнять тест 2 для массива words
, поэтому при выполнении булевого параметра b
вызовите foo ().Но это делает код теста b
количество words.length
раз.Конечно, оптимизация будет выглядеть следующим образом:
function foo(b) {
var words = [ "Lorem", "ipsum", "dolor", "sit", "amet" ];
var i;
if(b) {
for(i in words) {
/a/.test(words[i]); // test 1
/b/.test(words[i]); // test 2
/c/.test(swordstr[i]); // test 3
}
} else {
for(i in words) {
/a/.test(words[i]); // test 1
/b/.test(words[i]); // test 2
/c/.test(swordstr[i]); // test 3
}
}
}
Но тогда код становится загроможденным.Есть ли другой подход к этой ситуации?