我写了一个基于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)来解决这个问题。 所以我的问题是:为什么会发生这种情况,还有其他类似令人讨厌的差异吗?
答案 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中所述。