这个功能可以更快地提高性能吗?

时间:2014-01-02 19:09:02

标签: javascript optimization prototype

该功能已经告诉你它做了什么,但无论如何,它包装角度并确保它在0-360之间。这是Javascript:

Number.prototype.wrapAngle = function(){
    var d = this;
    while(d > 360){ d -= 360;};
    while(d < 0){ d += 360;};
    return d.toString();
}

我需要'wrapAngle'尽可能快!

2 个答案:

答案 0 :(得分:3)

为什么不使用modulo?

-721 % 360; // -1
390  % 360; // 30
90   % 360; // 90

所以:

Number.prototype.wrapAngle = function(){
    var d = this % 360;
    if (d < 0) { // ensure positive number.
      d += 360;
    }

    // return a number, not a string.
    // This is a math based transformation of a number, so it should be a number.
    return d; 
}

由于模数可以返回一个负数,但是该数字总是接近零而不是-360如果它是负数,你可以简单地将它增加一次。 / p>

效果比较:http://jsperf.com/wrapangle

答案 1 :(得分:1)

使用模数运算符。

Number.prototype.wrapAngle = function(){
    return (this % 360).toString();
}