2016-12-01 61 views
0

我在桌面Safari上遇到了一些问题,在手机上工作正常。Safari上的Javascript错误

当我尝试运行:

return Math.trunc(num * Math.pow(10, 2))/Math.pow(10, 2); 

我得到在控制台上:

TypeError: 'undefined' is not a function (evaluating 'Math.trunc(num * Math.pow(10, 2))') 

任何想法,为什么会这样?在其他浏览器上工作完美,我不知道为什么(我从来没有使用Safari浏览器)。

+0

向零取整严格的要求,即是负数的四舍五入预期? – LutzL

回答

3

Math.trunc在ES2015(2015年6月)中增加了。显然你使用的Safari版本中的JavaScript引擎还没有。

你可以填充工具,如果它丢失:

if (!Math.trunc) { 
    Object.defineProperty(Math, "trunc", { 
     value: function(val) { 
      return val < 0 ? Math.ceil(val) : Math.floor(val); 
     } 
    }); 
} 
+1

[根据MDN](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc)它在Safari 7.1中,尽管我们并不真正知道浏览器的版本是OP尝试。 – vlaz

+0

Safari => 7.1应该有。 – SSA

+0

好的,有没有其他的选择呢?我看到'Math.Floor',但不完全一样 –

0

什么return ~~(num * Math.pow(10, 2))/Math.pow(10, 2);

~~运营商似乎是一个很好的替代Math.trunc()

+0

...除了它会失败的大数,因为它需要通过一个有符号的32位整数往返。如果这不是问题,那么有一个简单得多的方法:'num | 0'。 –