JavaScript : 1行で、より0から遠い整数値に丸める
要するに、 0 よりも大きければ Math.ceil() を、 0よりも小さければ Math.floor() を使うわけです。
function foo(num){ return (num>0 ? Math.ceil : Math.floor)(num); } //下記コードと同等 function foo2(num){ var func; //丸めに使う関数 if(num>0){ func = Math.ceil; } else { func = Math.floor; } return func(num); } //普通はこう書くのかも。 function foo3(num){ return num>0 ? Math.ceil(num) : Math.floor(num); } //普通の長いバージョン function foo4(num){ if(num>0){ return Math.ceil(num); }else{ return Math.floor(num); } }
ポイントは、「関数を使い分け」るのではなく「関数を選び分け」ている事。
メリットを強いて言えば、同じ引数を2度書かずに済むことでしょうか。 floor, ceil では引数が1つなのでメリットは活きないですが、多くのあるいは複雑な引数を取る関数を使い分ける場合には、引数の修正が必要になっても修正が1箇所で済むから楽かもしれません。
可読性の低下のほうが問題かもしれませんけど。