Math.abs doesn't get simpler according to webkit JavaScriptCore
case MathObjectImp::Abs:
result = ( arg < 0 || arg == -0) ? (-arg) : arg;
However ceil uses C's ceil function
case MathObjectImp::Ceil:
result = ::ceil(arg);
so testing on JSpref
http://jsperf.com/math-ceil-vs-bitwise
bitwise is faster
testing @orangedog's answer http://jsperf.com/math-ceil-vs-bitwise/2 Math.ceil is faster
So I guess your best choice is:
var n = Math.abs(x);
var f = (n << 0),
f = f == n ? f : f + 1;
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…