Chrome/Chromium 不知道 JavaScript 函数 Math.sign



对于滚动功能,我使用一些数学功能:

transform: "rotateY("+(Math.sign(this._backlog)*Math.sqrt(Math.abs(this._backlog)))+"deg)"

虽然这在Firefox中效果很好,但它在Chrome中无法使用以下消息:

Uncaught TypeError: Object #<Object> has no method 'sign' 

Math.Abs和Math.sqrt正在工作。

我可以在Chrome中使用哪个功能?

Math.sign只是ES6(§20.2.2.28)的草稿规范的一部分,这是不完整的。从引擎到发动机的尚未指定的功能的支持可能是斑点的。

MDN先前声称Chrome 32支持了这一点,但据我所知,这完全是错误的。我的Chrome(36)版本不支持它,MDN现在声称只有Firefox支持此功能:https://developer.mozilla.org/en-us/docs/docs/web/javascript/javascript/reference/global_obignts/math/math/signs/math/sign。

,这是一个非常容易写的功能:

function sign(x){
    if( +x === x ) { // check if a number was given
        return (x === 0) ? x : (x > 0) ? 1 : -1;
    }
    return NaN;
}

nan,/- infinity和-0正确处理(sign(-0)==-0sign(NaN)==NaN),非数字输入将返回NAN。如果您不关心非数字输入,则可以使用此简化的单线(仍然可以处理NAN,/- Infinity和-0,但不检查输入类型):

function sign(x){return x>0?1:x<0?-1:x;}

一行函数:

var sign = function(n) {return n>0?1:n=0?0:-1;}

最新更新