2016-12-01 30 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'。 –