Представьте себе задачу, в которой есть массив ресурсов, которые имеют свойство type
. Основываясь на этом type
, необходимо выполнить различные функции. Один из способов реализовать это - через несколько условий if/else или switch/case.Какая из них более эффективна для поддержания: ссылки на функции JavaScript или условия Boolean + IF?
// at run time (run many times)
if (resources[ix].type == 'TYPE_ONE') {
runFuctionOne();
}
else{
runFuctionTwo();
}
Другой способ заключается в сохранении еще одно свойство, как execute
, которая будет назначена функция, которая удовлетворяла бы ресурса type
. Тогда вам не нужно если/другое условия и может выполнять свою функцию непосредственно как:
// at assign time (run once)
if (resources[ix].type == 'TYPE_ONE') {
resources[ix].execute = runFunctionOne;
}
else{
resources[ix].execute = runFuctionTwo;
}
// then at run time (run many times)
resources[ix].execute();
Итак, , какой путь будет более эффективным? Есть ли способ лучше?
Редактировать: Меня больше интересует решение, эффективное в среде Node.js, а не в среде браузера.
ли эта проблема причина? – OQJF
Какую проблему вы имеете в виду? – Eye
Я создал jsperf http://jsperf.com/javascript-function-references-vs-boolean-if-conditions, который показывает, что ссылки в браузерах работают быстрее. Однако сценарий Node.js сообщает об обратном: if/else в 3 раза быстрее, чем ссылки на функции. – Eye