为什么 Math.log10 在某些系统上工作,但在其他系统上返回未定义

Why does Math.log10 work on some systems but return undefined on others?

本文关键字:系统 其他 返回 未定义 工作 为什么 Math log10      更新时间:2023-09-26

我写了一个基于 html5 画布的应用程序,用于将电势绘制为颜色图。我正在使用 Math.log10 来重新缩放值,这在相当多的系统(Chrome-Firefox-Opera;笔记本电脑和 PC;视窗和 Ubuntu;集成和专用图形)。然后我发现一台 PC 和一台笔记本电脑都装有 Windows,情节不起作用。该错误显示无法将 Math.log10() 作为函数调用,并且仅在 js 控制台中键入 Math.log10 返回未定义。我通过将Math.log10(someValue)替换为Math.log(someValue)/2.3来解决这个故障。所以我的问题是:为什么会发生这种情况,还有其他类似的烦人差异吗?

这是

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

然而,Math.log()是一个单独的功能,早在Math.log10()年之前就已经引入,并且具有更大的浏览器支持。

Mozilla 开发者网络列出了浏览器对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
Math.log10 = Math.log10 || function(x) {
  return Math.log(x) * Math.LOG10E;
};

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

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

Math.log()是纳皮尔对数(ln)。

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

Math.log()具有更大的浏览器支持,如上一篇文章所述。