为什么Math.log10在某些系统上工作但在其他系统上返回undefined?

时间:2015-02-03 10:43:28

标签: javascript

我写了一个基于html5画布的应用程序,用于绘制电位作为颜色图。我使用Math.log10来重新调整值,这在很多系统上运行良好(Chrome-Firefox-Opera;笔记本电脑和PC; Windows和Ubuntu;集成和专用图形)。然后我发现一台PC和一台笔记本电脑都带有Windows,其中的情节不起作用。错误显示Math.log10()无法作为函数调用,只是在js控制台中键入Math.log10返回undefined。我通过用Math.log(someValue)/2.3替换Math.log10(someValue)来解决这个问题。 所以我的问题是:为什么会发生这种情况,还有其他类似令人讨厌的差异吗?

3 个答案:

答案 0 :(得分:15)

这是特定于浏览器的。并非所有浏览器都支持实验Math.log10()功能 - 主要是Internet Explorer。

然而,

Math.log()是一个单独的函数,它在Math.log10()之前很久才被引入,并且具有更大的浏览器支持。

Mozilla开发者网络列出了browser support for Math.log10()

  

桌面浏览器

     
Chrome    Firefox (Gecko) Internet Explorer   Opera   Safari
38        25 (25)         Not supported       25      7.1
     

移动浏览器

     
Android         Chrome for Android    Firefox Mobile (Gecko)  IE Mobile      Opera Mobile    Safari Mobile
Not supported   Not supported         25.0 (25)               Not supported  Not supported   iOS 8

答案 1 :(得分:7)

Math.log10 = Math.log10 || function(x) {
  return Math.log(x) * Math.LOG10E;
};

将其粘贴到您的常用JS文件中,如果浏览器不支持 log10 ,这将解决此问题。

我知道现在为时已晚,但如果有人在搜索时到达您的帖子,可能会有所帮助。

答案 2 :(得分:1)

Math.log()是Napierian对数(ln)。

所以你应该使用Math.log(value)/Math.log(10) 因为log 10 (X)= ln(X)/ ln(10)

Math.log()具有更大的浏览器支持,如the previous post中所述。