javascript - 字符串 => JS 中的数字转换

标签 javascript

我有一个 URL,我在哈希后对其进行解析。哈希后的内容是一个数学方程式(例如 http://example.com/something#5+1 ),我想找到它的总和(或任何其他方程式的结果,如乘积、除法等)

我可以使用以下方式检索数字:

var url = (window.location.hash).substr(1) // returns "5+1" as a string

虽然我发现如果我尝试将其转换为数字,它实际上并没有进行数学计算。它将它减少到 5,而不是显示 8 的总和。

这种转换是否可能?

谢谢!

最佳答案

不要 eval() URL 中的任意代码,因为它很容易被 XSS 利用。我创建了一个名为 JSandbox 的库可以在沙箱中执行 JavaScript 代码,但需要 Web Worker 的支持。为 IE 使用假的 worker 支持不是一个好主意,因为这样沙箱的安全性就消失了。

您的代码将如下所示:

JSandbox.eval("with(Math){" + location.hash.substr(1) + "}", function (res) {
  // handle the results here
});

也可以使用它来处理错误:

JSandbox.eval("with(Math){" + location.hash.substr(1) + "}", function (res) {
  // handle the results here
}, null, function (err) {
  // handle errors here
});

我包含了一个 with (Math) { ... } 包装器,因此哈希码可以快速访问 Math 函数。 (例如 abs(..) 而不是 Math.abs(..))

关于javascript - 字符串 => JS 中的数字转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1956538/

相关文章:

javascript - 在 Firefox 中与 Web 内容(页面对象)共享插件对象(内容脚本)

JavaScript 控制台库

javascript - AngularUi jQuery Passthrough - 调用方法获取插件值

javascript - jQuery/javascript 问题,点击处理程序是异步执行的吗?

javascript - 当根节点传递给它时,d3 TreeMap 布局是否被缓存?

javascript - 如何使导航栏滚动并在展开时固定到页面顶部?

javascript - 如何将图像上传到 HTML5 canvas

javascript - html 和 jquery 自动完成(输入值)

javascript - 如何在 React Native 中设置 axios 的休息状态

javascript - 尝试在 IE11 中提交表单,但无法正常工作