Mic*_*ael 1 javascript math sign chromium
对于滚动功能,我使用了一些数学函数:
transform: "rotateY("+(Math.sign(this._backlog)*Math.sqrt(Math.abs(this._backlog)))+"deg)"
Run Code Online (Sandbox Code Playgroud)
虽然这在Firefox中运行良好,但在Chrome中无法使用以下消息:
Uncaught TypeError: Object #<Object> has no method 'sign'
Run Code Online (Sandbox Code Playgroud)
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/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;
}
Run Code Online (Sandbox Code Playgroud)
正确处理NaN,+/ - Infinity和-0(sign(-0)==-0,sign(NaN)==NaN),非数字输入将返回NaN.如果你不关心非数字输入,你可以使用这个简化的单行(仍然处理NaN,+/ - Infinity和-0但不检查输入类型):
function sign(x){return x>0?1:x<0?-1:x;}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1941 次 |
| 最近记录: |