簡體   English   中英

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

[英]Chrome/Chromium doesn't know JavaScript function 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/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/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;}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM