返回八进制值的 Javascript eval 函数

标签 javascript

当我尝试将“eval”函数作为 eval ("020 * 05 + 05") 时,它返回 85 而不是 105。 有人能解释一下为什么 eval 函数会这样吗?还建议任何解决这个问题的方法。

最佳答案

以零开头的数字常量(如“020”)被解释为八进制。对于 C、C++、Java、Javascript 以及大多数与 C 具有模糊外观关系的其他语言都是如此。

如果出于某种原因你真的、真的需要使用“eval()”,并且你有这些奇怪的字符串,数字常量上有伪造的前导零,你可以尝试这样的事情:

var answer = eval(weirdString.replace(/\b0(\d+)\b/g, '$1'));

不过,我希望您能找到一种使用“eval()”的方法。 (请注意下面的评论,上面显示的 hack 将在包含小数部分的数字上出现问题。)

关于返回八进制值的 Javascript eval 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2523779/

相关文章:

javascript/angularjs 剪切字符串以适应 div

javascript - 我无法将 highchart 图表数据保存在 localStorage 中

javascript - 如何将日期选择器添加到内容可编辑的td?

javascript - 水平滚动不适用于 jquery 单击

javascript - 尝试上下移动 div 时出现问题

javascript - 如何让浏览器释放 OfflineAudioContext 使用的内存?

javascript - 如何去除打印预览中的溢出?

javascript - iOS 8 css 旋转元素消失

Javascript:遍历数组并修改数组内的项目

javascript - 如何在 JavaScript 中命名匿名对象?