В этом коде
fu=function(arg1, arg2){
if(condition1) return arg1
if(condition2) return arg2
}
fu(long_calculation1(), long_calculation2())
несмотря на то, что какой то один, а может и оба аргумента могут не понадобиться, они все равно вычисляются. Если переписать вот так
fu=function(arg1, arg2){
if(condition1) return eval (arg1)
if(condition2) return eval (arg2)
}
fu("long_calculation1()", "long_calculation2()")
Все будет намного быстрей. Можно оборачивать не в строки а в функции, а внутри вызывать, только запись будет более громоздкой.
Я, почему-то не видел никогда примеров подобных оптимизаций в js, хотя, решения, казалось бы, очевидны. Это моветон что ли? Или есть какие-то подводные камни?